Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Preprocessor

      From cppreference.com
      <c
       
       
       
       

      The preprocessor is executed attranslation phase 4, before the compilation. The result of preprocessing is a single file which is then passed to the actual compiler.

      Contents

      [edit]Directives

      The preprocessing directives control the behavior of the preprocessor. Each directive occupies one line and has the following format:

      • # character
      • preprocessing instruction (one ofdefine,undef,include,if,ifdef,ifndef,else,elif,elifdef,elifndef(since C23),endif,line,embed(since C23),error,warning(since C23),pragma)[1]
      • arguments (depends on the instruction)
      • line break.

      The null directive (# followed by a line break) is allowed and has no effect.

      [edit]Capabilities

      The preprocessor has the source file translation capabilities:

      • conditionally compile of parts of source file (controlled by directive#if,#ifdef,#ifndef,#else,#elif,#elifdef,#elifndef(since C23) and#endif).
      • replace text macros while possibly concatenating or quoting identifiers (controlled by directives#define and#undef, and operators# and##)
      • include other files (controlled by directive#includeand checked with__has_include(since C23))
      • cause anerrororwarning(since C23) (controlled by directive#error or#warning respectively(since C23))

      The following aspects of the preprocessor can be controlled:

      [edit]Footnotes

      1. These are the directives defined by the standard. The standard does not define behavior for other directives: they might be ignored, have some useful meaning, or make the program ill-formed. Even if otherwise ignored, they are removed from the source code when the preprocessor is done.A common non-standard extension is the directive#warning which emits a user-defined message during compilation.(until C23)

      [edit]Example

      This section is incomplete
      Reason: no example

      [edit]References

      • C23 standard (ISO/IEC 9899:2024):
      • 6.10 Preprocessing directives (p: TBD)
      • C17 standard (ISO/IEC 9899:2018):
      • 6.10 Preprocessing directives (p: 117-129)
      • C11 standard (ISO/IEC 9899:2011):
      • 6.10 Preprocessing directives (p: 160-178)
      • C99 standard (ISO/IEC 9899:1999):
      • 6.10 Preprocessing directives (p: 145-162)
      • C89/C90 standard (ISO/IEC 9899:1990):
      • 3.8 Preprocessing directives

      [edit]See also

      C documentation forPredefined Macro Symbols
      C documentation forMacro Symbol Index
      C++ documentation forPreprocessor
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/preprocessor&oldid=179530"

      [8]ページ先頭

      ©2009-2025 Movatter.jp