加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中使用#define没有值

发布时间:2020-12-16 09:52:41 所属栏目:百科 来源:网络整理
导读:如果使用的#define没有值,比如 #define COMMAND_SPI() 它默认值为0吗? 解决方法 不,它评估为零.从字面上看,这个符号一无所获. 但是,一旦你有#define FOO,预处理器条件#ifdef FOO现在将成立. 另请注意,在gcc和可能的其他编译器中,如果在命令行上使用-DFOO定
如果使用的#define没有值,比如

#define COMMAND_SPI()

它默认值为0吗?

解决方法

不,它评估为零.从字面上看,这个符号一无所获.

但是,一旦你有#define FOO,预处理器条件#ifdef FOO现在将成立.

另请注意,在gcc和可能的其他编译器中,如果在命令行上使用-DFOO定义宏,则默认情况下计算结果为1.

由于OP更新了他的问题以引用类似函数的宏,让我们考虑一个小例子.

#define FOO
#define BAR()


FOO
BAR
BAR()

这不是一个有效的C程序,但预处理器并不关心.如果我用gcc -E Input.c编译它,我得到一个空白,然后是BAR,接着是另一个空白.这是因为第一个和第三个表达式评估为虚无,并且中间表达式未展开,因为后面没有().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读