Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

152 lines
6.8KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1987-2020 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation. A copy of
  7. the license is included in the
  8. section entitled "GNU Free Documentation License".
  9. This manual contains no Invariant Sections. The Front-Cover Texts are
  10. (a) (see below), and the Back-Cover Texts are (b) (see below).
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>Implementation limits (The C Preprocessor)</title>
  21. <meta name="description" content="Implementation limits (The C Preprocessor)">
  22. <meta name="keywords" content="Implementation limits (The C Preprocessor)">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Index-of-Directives.html#Index-of-Directives" rel="index" title="Index of Directives">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="Implementation-Details.html#Implementation-Details" rel="up" title="Implementation Details">
  30. <link href="Obsolete-Features.html#Obsolete-Features" rel="next" title="Obsolete Features">
  31. <link href="Implementation_002ddefined-behavior.html#Implementation_002ddefined-behavior" rel="prev" title="Implementation-defined behavior">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style: oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="Implementation-limits"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="Obsolete-Features.html#Obsolete-Features" accesskey="n" rel="next">Obsolete Features</a>, Previous: <a href="Implementation_002ddefined-behavior.html#Implementation_002ddefined-behavior" accesskey="p" rel="prev">Implementation-defined behavior</a>, Up: <a href="Implementation-Details.html#Implementation-Details" accesskey="u" rel="up">Implementation Details</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
  65. </div>
  66. <hr>
  67. <a name="Implementation-limits-1"></a>
  68. <h3 class="section">11.2 Implementation limits</h3>
  69. <a name="index-implementation-limits"></a>
  70. <p>CPP has a small number of internal limits. This section lists the
  71. limits which the C standard requires to be no lower than some minimum,
  72. and all the others known. It is intended that there should be as few limits
  73. as possible. If you encounter an undocumented or inconvenient limit,
  74. please report that as a bug. See <a href="http://gcc.gnu.org/onlinedocs/gcc/Bugs.html#Bugs">Reporting Bugs</a> in <cite>Using
  75. the GNU Compiler Collection (GCC)</cite>.
  76. </p>
  77. <p>Where we say something is limited <em>only by available memory</em>, that
  78. means that internal data structures impose no intrinsic limit, and space
  79. is allocated with <code>malloc</code> or equivalent. The actual limit will
  80. therefore depend on many things, such as the size of other things
  81. allocated by the compiler at the same time, the amount of memory
  82. consumed by other processes on the same computer, etc.
  83. </p>
  84. <ul>
  85. <li> Nesting levels of &lsquo;<samp>#include</samp>&rsquo; files.
  86. <p>We impose an arbitrary limit of 200 levels, to avoid runaway recursion.
  87. The standard requires at least 15 levels.
  88. </p>
  89. </li><li> Nesting levels of conditional inclusion.
  90. <p>The C standard mandates this be at least 63. CPP is limited only by
  91. available memory.
  92. </p>
  93. </li><li> Levels of parenthesized expressions within a full expression.
  94. <p>The C standard requires this to be at least 63. In preprocessor
  95. conditional expressions, it is limited only by available memory.
  96. </p>
  97. </li><li> Significant initial characters in an identifier or macro name.
  98. <p>The preprocessor treats all characters as significant. The C standard
  99. requires only that the first 63 be significant.
  100. </p>
  101. </li><li> Number of macros simultaneously defined in a single translation unit.
  102. <p>The standard requires at least 4095 be possible. CPP is limited only
  103. by available memory.
  104. </p>
  105. </li><li> Number of parameters in a macro definition and arguments in a macro call.
  106. <p>We allow <code>USHRT_MAX</code>, which is no smaller than 65,535. The minimum
  107. required by the standard is 127.
  108. </p>
  109. </li><li> Number of characters on a logical source line.
  110. <p>The C standard requires a minimum of 4096 be permitted. CPP places
  111. no limits on this, but you may get incorrect column numbers reported in
  112. diagnostics for lines longer than 65,535 characters.
  113. </p>
  114. </li><li> Maximum size of a source file.
  115. <p>The standard does not specify any lower limit on the maximum size of a
  116. source file. GNU cpp maps files into memory, so it is limited by the
  117. available address space. This is generally at least two gigabytes.
  118. Depending on the operating system, the size of physical memory may or
  119. may not be a limitation.
  120. </p>
  121. </li></ul>
  122. <hr>
  123. <div class="header">
  124. <p>
  125. Next: <a href="Obsolete-Features.html#Obsolete-Features" accesskey="n" rel="next">Obsolete Features</a>, Previous: <a href="Implementation_002ddefined-behavior.html#Implementation_002ddefined-behavior" accesskey="p" rel="prev">Implementation-defined behavior</a>, Up: <a href="Implementation-Details.html#Implementation-Details" accesskey="u" rel="up">Implementation Details</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
  126. </div>
  127. </body>
  128. </html>