我在 Ubuntu 中用 C 语言编写了一段代码,该代码检查给定输入中的平衡括号。我使用 gcc 编译器编译了它,并且得到了正确的输出。这实际上是在线类(class)的一部分,他们要求我使用编译器标志
gcc -pipe -O2 -std=c11 filename -lm
我认为我不明白我应该做什么,所以我尝试使用此标志进行编译,但我的代码未编译。我的问题是当我这样做时我的代码是否可以编译
gcc filename.c
为什么我编译的时候没有编译
gcc -pipe -O2 -std=c11 filename -lm
我收到的错误消息是:
cc1plus: warning: command line option ‘-std=c11’ is valid for C/ObjC but not for C++
最佳答案
原因是文件结束。大写的 C 被解释为 C++ 文件。解决方案是像这样重命名文件:
mv filename.C filename.c
My question is if my code compiles when I do
gcc filename.C
why isn't it compiling when I dogcc -pipe -O2 -std=c11 <filename> -lm
见上文。但在某些情况下,它并不能解决所有问题。虽然 C11 为以前的版本提供了一些扩展,但它并不是 100% 向后兼容。
关于c - 编译器标志有什么用?为什么我的代码无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084871/