c - 编译器标志有什么用?为什么我的代码无法编译?

标签 c ubuntu compilation

我在 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 do gcc -pipe -O2 -std=c11 <filename> -lm

见上文。但在某些情况下,它并不能解决所有问题。虽然 C11 为以前的版本提供了一些扩展,但它并不是 100% 向后兼容。

关于c - 编译器标志有什么用?为什么我的代码无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084871/

相关文章:

c - 多个线程如何更改互斥锁锁定的静态变量

c++ - 是否有迭代 POSIX 环境变量的函数?

apache 2.4 不会从/tmp 服务

java - 在VSCode中编译java类

c++ - 有没有人成功为 ARC 移植 SpeakHere?

c - 在 Linux C 中检索 DHCP 分配的域后缀

c - 为什么在位掩码中使用十进制数?

python - 收到错误 13 : permission denied while trying to save my jupyter notebook

python - 如何安装 'adium-theme-ubuntu' (virtualenv)

Android 从命令行构建 .jar 失败