如何知道 cl.exe 应用的是 c89 还是 c99?

发布于 2024-09-03 11:04:23 字数 177 浏览 8 评论 0原文

我刚刚在这篇帖子中遇到了这个术语,

我如何检查哪个规则实际上是我的编译器使用了?

或者是否可以为 cl.exe 指定规则?

I just came across this term in this post,

how do I check which rule is actually used by my compiler?

Or is it possible to specify a rule for cl.exe?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凑诗 2024-09-10 11:04:24

C99 编译器必须定义一个预处理器符号 __STDC_VERSION__ ,其值为 199901L,而 C90 编译器不应该这样做(没有什么可以阻止他们这样做,并且仍然符合 C90,但我怀疑他们这样做)。显然,对于不兼容的编译器或处于不兼容模式的编译器来说,没有什么是确定的。并且仍然存在错误和转换的问题(例如,上次我检查时,g++ 仍然没有按照 C++98 规定的值定义等效的宏,而我认识的大多数人认为这对他们来说更有用这样做而不是等待导出的实现)。

C99 compilers must define a preprcessor symbol __STDC_VERSION__ with value 199901L which C90 one shouldn't do this (nothing prevent them to do so and still be compliant with C90, but I doubt they do). Obviously nothing is sure for non compliant compilers or compilers in non compliant mode. And there are still the question of bugs and transition (last time I checked for instance, g++ didn't still define the equivalent macro at the value mandated for C++98 while most people I know think it would be more usefull for them to do so instead of waiting for the implementation of export).

悲歌长辞 2024-09-10 11:04:24

cl.exe,微软编译器?它主要不支持 C99。

cl.exe, the Microsoft compiler? It doesn't support C99, mostly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文