当前位置:  开发笔记 > 编程语言 > 正文

错误:宏名称必须是使用#ifdef 0的标识符

如何解决《错误:宏名称必须是使用#ifdef0的标识符》经验,为你挑选了3个好方法。

我有用C++编写的应用程序的源代码,我只想用以下方法评论:

#ifdef 0
...
#endif

我得到了这个错误

错误:宏名称必须是标识符

为什么会这样?



1> paxdiablo..:

#ifdef指令用于检查是否定义了预处理程序符号.标准(C11 6.4.2 Identifiers)要求标识符不能以数字开头:

identifier:
    identifier-nondigit
    identifier identifier-nondigit
    identifier digit
identifier-nondigit:
    nondigit
    universal-character-name
    other implementation-defined characters>
nondigit: one of
    _ a b c d e f g h i j k l m
    n o p q r s t u v w x y z
    A B C D E F G H I J K L M
    N O P Q R S T U V W X Y Z
digit: one of
    0 1 2 3 4 5 6 7 8 9

使用预处理器阻止代码的正确形式是:

#if 0
: : :
#endif

您还可以使用:

#ifdef NO_CHANCE_THAT_THIS_SYMBOL_WILL_EVER_EXIST
: : :
#endif

但你需要确信这些符号不会被你自己以外的代码无意中设置.换句话说,不要使用类似NOTUSEDDONOTCOMPILE其他人也可能使用的东西.为安全起见,#if应该首选该选项.



2> tvanfosson..:

使用以下命令计算表达式(常量0的计算结果为false).

#if 0
 ...
#endif



3> Fooo..:

如果您不遵守marco规则,也会发生此错误

喜欢

#define 1K 1024 // Macro rules must be identifiers error occurs

原因:宏应以字母开头,而不是数字

改成

#define ONE_KILOBYTE 1024 // This resolves 

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有