c - #ifndef __GNUC__ 让我窒息

标签 c gnu

这个问题可能很奇怪,我目前正在研究一些旧代码(不是我写的)。我实际上不是 C 程序员,但我想了解这部分代码实际上应该做什么。幸运的是,奇怪的部分并不太长(配置的一部分):

int
main ()
{
#ifndef __GNUC__
       choke me
#endif

  ;
  return 0;
}

如果它不是 GNU 编译器那么“choke me”...这个choke me 应该是什么意思...我真的不明白. (并且在谷歌搜索时只发现奇怪的东西让我窒息 -.-)

最佳答案

它只是应该是一些无效的 C 并且会触发语法错误,阻止文件编译。

大概程序员不打算让代码与 GNU C (gcc) 以外的任何编译器一起工作,因此如果使用任何其他编译器,这将强制构建失败。所选择的词没有特别的意义,除了“让我窒息”的意思可能是“这是编译器无法‘吞下’的东西,它会杀死它。”

更现代的方法是使用 #error .

关于c - #ifndef __GNUC__ 让我窒息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63734039/

相关文章:

c++ - 位域,为什么特定于实现?

c - 如何将浮点变量从一个函数传递到另一个函数?

c - 这个 SWITCH 错误是什么意思?

c++ 编译器可以在用户定义的和编译器生成的复制构造函数之间自由选择吗?

c - 哪个编译器编译了这个文件?

c - 将指针作为局部变量的函数的汇编指令

c++ - 具有源子目录的单个顶级 makefile

linux - 为什么这个 SED 命令不起作用?

c++ - 在 *nix 上了解异步编程的基础知识

c - 为什么cgo的性能这么慢?我的测试代码有问题吗?