最佳答案
C99 编译器必须定义一个值为 199901L 的预处理器符号 __STDC_VERSION__
,而 C90 编译器不应该这样做(没有什么可以阻止他们这样做并且仍然符合 C90,但我怀疑他们这样做)。显然,对于非兼容编译器或非兼容模式下的编译器,没有什么是确定的。而且仍然存在错误和转换的问题(例如,上次我检查时,g++ 仍然没有在 C++98 规定的值上定义等效的宏,而我认识的大多数人认为这对他们更有用这样做而不是等待 export
的实现)。
关于c - 我如何知道 cl.exe 应用的是 c89 还是 c99?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2938460/