该问题基于以下事实,不能通过看工程里包含的文件时.c还是.cpp来判断:
创建C++空工程
↓
编一个符合C++语法但不符合C语法的源文件,保存成.cpp
比如包含 for(int i=0,i<10,++i) 语法就不符合C
↓
编译能通过
↓
将文件改成.c
↓
编译仍然能通过,说明即使文件名是.c,但工程是C++工程,仍按C语法进行编译。
这个就要看你的设置问题了,我的dev C++里面保存为C编译就不会通过的。下图所示:
在你的工具->编译选项->程序中,可以设置你编译C语言程序时,采取的标注是gcc还是g++。
追问我主要想问一下如何看一个工程是C工程还是C++工程。
我举的例子是,新建一个C++工程,将你的文件保存成.cpp,编译通过,再把文件名改成.c(而不是新建一个C工程),编译也通过。应该说明用什么编译器来编不取决于后缀。
我研究了一下,这个貌似跟工程是没有关系的吧
比如我新建一个C的空工程。
新建一个main.c文件,
#include #include
int main(int argc, char *argv[])
{
for(int i=0;i<2;i++)
printf("hello\n");
system("PAUSE");
return 0;
}
编译不会通过,但是我将该文件重命名为main.cpp,此时编译可以通过,此时再命令为main.c,编译又可以通过。
这个说明文件一旦后缀为.cpp,使用g++编译后,默认,采取这个编译器了,只有初始化后缀为.c时,才会使用gcc编译。