【发布时间】:2018-09-07 05:02:24
【问题描述】:
我在一些源代码中看到了这种定义
#define somemacro(a,b,c) (0)
我在相同的源代码中看到:
#define anothermacro(a,b,c) (1)
任何机构都可以解释这种宏定义吗?这样定义的目的是什么?
【问题讨论】:
-
我无法重现该错误。宏定义文字替换。
-
如果您发布的代码导致分段错误,那么您的编译器有问题
-
宏扩展为常量,而不是调用函数。我看不出它是如何导致崩溃(分段错误)的——程序应该简单地运行并退出状态为零(如果您使用 C99 或更高版本;如果您使用 C90,则具有不确定的值)。
-
对所有人来说,我弄错了程序不会崩溃。但是这样定义的目的是什么?
-
在某些情况下,平台可能不支持该功能。那里应该是条件编译命令,比如
#if。如果不是这样,我不知道为什么需要这样做。
标签: c macros c-preprocessor