【发布时间】:2019-08-26 11:31:04
【问题描述】:
我遇到了一些编译开关,有一件事情让我感到惊讶。我不明白为什么即使定义的值是纯垃圾,代码也会编译。
似乎#if 自动将#define 的值分配为0 并且不会触发任何错误,而if 语句则不会。
#define variable pureGarbage|0xff
#if (variable == 0xff)
#define testVar 1
#endif
int main()
{
printf("%d", testVar)
return 0;
}
你猜怎么着?有用。有人可以用misra标准确认这一点吗?这是默认行为吗?
【问题讨论】:
标签: c