编译器标志是什么?为什么我的代码不能编译?

时间:2019-09-24 16:46:23

标签: c ubuntu compilation

我在Ubuntu中用C语言编写了一个代码,用于检查给定输入中的方括号。我使用gcc编译器对其进行了编译,并获得了正确的输出。这实际上是在线课程的一部分,他们要求我使用编译器标志

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++

3 个答案:

答案 0 :(得分:1)

原因是文件结尾。大写的C被解释为C ++文件。解决方案是像这样重命名文件:

mv filename.C filename.c
  

我的问题是,gcc filename.C执行时我的代码是否可以编译?gcc -pipe -O2 -std=c11 <filename> -lm为何不能编译我的代码

参见上文。但是在某些情况下,它不能解决所有问题。尽管C11对以前的版本进行了一些扩展,但并不是100%向后兼容。

答案 1 :(得分:0)

-std=c11是正确的选择 但是,您至少需要gcc 4.7或更高级别才能具有此选项

答案 2 :(得分:-1)

用“ <文件名>”表示要替换要编译的文件名。不能包含文字字符串“ ”。