小智 10
gcc,g ++和其他前端使用文件名来确定语言.例如,gcc和g ++之间唯一的主要区别就是咬了新的C++程序员:不同的链接设置(对于C++ stdlib).
如果您的文件被错误检测,请使用-x选项(可能是-std)明确指定.或者遵循gcc用于文件名的常用命名约定.对于C,这意味着*.c.
仔细检查您是否使用大写/大写*.C来命名文件; 那被检测为C++.
小智 7
如果我编译这个:
int f( int & r ) {
return r + 1;
}
int main() {
int x = 3;
return f( x );
}
Run Code Online (Sandbox Code Playgroud)
有:
gcc e.c
Run Code Online (Sandbox Code Playgroud)
我明白了:
e.c:1: error: expected ';', ',' or ')' before '&' token
Run Code Online (Sandbox Code Playgroud)
你有没有给出你正在编译.cpp扩展名的文件?如果有,gcc驱动程序会将其编译为C++文件.
程序gcc是一个驱动程序,它可以根据安装的内容和文件的扩展名分派给C,C++,Ada,Fortran,Java和其他编译器.
如果明智地选择了这些,那么你不应该做任何事情来将C文件编译为编译为C++的C和C++文件.要强制编译为C,请在编译文件之前使用它-x c作为选项.
我的猜测是你用大写的C而不是小写的C命名你的文件,大写的C被认为是C++.
| 归档时间: |
|
| 查看次数: |
3981 次 |
| 最近记录: |