这将在啥时候执行?
Posted
技术标签:
【中文标题】这将在啥时候执行?【英文标题】:When will this execute?这将在什么时候执行? 【发布时间】:2017-05-09 06:09:21 【问题描述】:我有一个 C 代码:
...
void caller()
#define YES 1
#define NO 0
...
当caller
被调用/执行时,#define
两条线会执行,还是仅在编译时执行。
【问题讨论】:
在编译之前。在预处理步骤。 是的......我就是这个意思。那么这是否意味着caller
方法实际上是空的?
预处理器代码不执行。您的函数体将与void caller()
相同
这里什么都不会执行...
顺便说一句,在 C 中它是一个函数,而不是一个方法。空参数列表表示没有运行时参数检查,应该是:void caller(void)
。 C++ 中的情况有所不同,但您将其标记为 C。
【参考方案1】:
预处理器宏不执行,它们只是代码的命名片段,如果您使用它们,预处理器会将其替换为它们的内容。阅读更多关于预处理器宏的信息here。
因此,经过预处理后,您的代码将是:
void caller()
假设您在 #define
之后使用了 YES
宏:
#define YES 1
#define NO 0
void caller()
printf("My answer is: %d", YES);
经过预处理后,上面的代码如下:
void caller()
printf("My answer is: %d", 1);
【讨论】:
以上是关于这将在啥时候执行?的主要内容,如果未能解决你的问题,请参考以下文章