错误:宏名称必须是使用 #ifdef 0 的标识符
我有一个用 C++ 编写的应用程序的源代码,我只想使用以下内容来评论一些内容:
#ifdef 0
...
#endif
我收到此错误
错误:宏名称必须是标识符
为什么会发生这种情况?
I have the source code of an application written in C++ and I just want to comment something using:
#ifdef 0
...
#endif
And I get this error
error: macro names must be identifiers
Why is this happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
#ifdef 指令用于检查是否定义了预处理器符号。标准 (
C11 6.4.2 标识符
) 规定标识符不得以数字开头:正确的使用预处理器阻止代码的形式是:
您也可以使用:
但您需要确信这些符号不会被您自己以外的代码无意中设置。 换句话说,不要使用其他人也可能使用的
NOTUSED
或DONOTCOMPILE
之类的内容。 为了安全起见,应首选#if
选项。The #ifdef directive is used to check if a preprocessor symbol is defined. The standard (
C11 6.4.2 Identifiers
) mandates that identifiers must not start with a digit:The correct form for using the pre-processor to block out code is:
You can also use:
but you need to be confident that the symbols will not be inadvertently set by code other than your own. In other words, don't use something like
NOTUSED
orDONOTCOMPILE
which others may also use. To be safe, the#if
option should be preferred.使用以下内容计算表达式(常量 0 计算结果为 false)。
Use the following to evaluate an expression (constant 0 evaluates to false).
如果您不遵循宏规则,也可能会发生此错误,
例如
原因:宏应该以字母而不是数字开头
更改为
This error can also occur if you are not following the marco rules
Like
Reason: Macro Should begin with a letter, not a number
Change to
#ifdef 需要一个宏而不是表达式
当使用常量或表达式
或者
使用 #ifdef 时,它会报告此错误
,其中 #ifdef 需要宏而不是宏表达式
#ifdef expect a macro rather than expression
when using constant or expression
or
if #ifdef is used the it reports this error
Where #ifdef expect a macro rather than macro expresssion
也可能会遇到此错误
请注意,如果您不小心键入: ...而不是...,
Note that you can also hit this error if you accidentally type:
...instead of...