在make文件中可以链接.cc文件而不能链接.c文件的原因是因为.cc文件是C++源文件,而.c文件是C源文件。C++是C的超集,C++编译器可以编译C代码,但C编译器无法编译C++代码。
C++相对于C语言具有更多的特性和功能,例如类、对象、继承、多态等。因此,C++编译器在编译C++源文件时会对代码进行更复杂的处理和优化。
在链接阶段,编译器会将源文件编译成目标文件,然后链接器将这些目标文件合并成最终的可执行文件。链接器需要根据目标文件中的符号表信息来解析函数和变量的引用关系。C++编译器会对C++源文件进行名称修饰(name mangling),以支持函数重载和命名空间等特性。而C编译器不会进行名称修饰。
因此,在make文件中可以链接.cc文件而不能链接.c文件,是因为链接器需要根据编译器生成的目标文件中的符号表信息来解析函数和变量的引用关系,而C++编译器会对C++源文件进行更复杂的处理和优化,包括名称修饰,而C编译器不会进行这些处理。
领取专属 10元无门槛券
手把手带您无忧上云