今天遇到了一些关于编译的问题,在网上查找不到具体答案,所以做了一些实验来验证自己的想法
详细完整的描述可以参考其他博文:
gcc和g++编译器的区别
这里摘抄其中的两句话:
后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是C++程序, 注意,虽然C++是C的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。
猜想我今天遇到的问题就是由这句话造成
首先,文件夹makefileadd中有如下文件:
add.h add.c makefile testadd.c
如果,在testadd.c中不包含#include "add.h"
运行gcc add.h testadd.c -o main.exe
出现警告,但能够正常编译链接得到可执行文件 main.exe
warning: implicit declaration of function ‘add’ [-Wimplici