我在glibc中看到了debug printfs (void) 0,如果定义了NDEBUG,则内部定义为.同样__noop,Visual C++编译器也是如此.前者适用于GCC和VC++编译器,而后者仅适用于VC++.现在我们都知道上述两个语句都将被视为无操作,并且不会生成相应的代码; 但这是我怀疑的地方.
在这种情况下__noop,MSDN说它是编译器提供的内部函数.来(void) 0〜为什么编译器将其解释为没有操作?这是C语言的一个棘手的用法还是标准说明了它的明确性?或者甚至那与编译器实现有关?