What is the purpose of a single pound/hash sign (#) on its own line in the C/C++ preprocessor?

后端 未结 3 1742
有刺的猬
有刺的猬 2021-01-31 00:40

I have been looking at the Boost libraries source code, and I have noticed that often there are single pound signs without any preprocessor directives attached to them. I read t

相关标签:
3条回答
  • 2021-01-31 01:16

    Always check an authoritative source instead of relying on other resources. C is standardised as ISO 9899::2011, C++ also has an ISO standard. Both are well accepted and the final drafts available by a short search. The C standard states in 6.10.7 (C++ has much the same text):

    A preprocessing directive of the form

    # new-line
    

    has no effect.

    This is a null directive, as much as an ; without a preceeding expression in the core-language is a null statement .

    For the preprocessor it is just for formatting/readability to highlight that the lines belong semantically together. (the semicolon OTOH is semantically relevant).

    0 讨论(0)
  • 2021-01-31 01:27

    A # on its own on a line has no effect at all. I assume it's being used for aesthetic value.

    The C standard says:

    6.10.7 Null directive

    Semantics

    A preprocessing directive of the form

    # new-line

    has no effect.

    The C++ standard says the same thing:

    16.7 Null directive [cpp.null]

    A preprocessing directive of the form

    # new-line

    has no effect.

    0 讨论(0)
  • 2021-01-31 01:34

    It makes the source code look pretty, that's all.

    Highlights the fact that the whole block is a preprocessor section.

    And indeed, both the C and C++ preprocessors must ignore # on a line.

    0 讨论(0)
提交回复
热议问题