在C++中编译器,兼容c编译方式,优先使用c++的编译方式。
extern关键字能强制让C++编译器进行c语言方式编译。
add.h
int add(int a, int b);
add.c
#include "add.h"
int add(int a, int b)
{
return a + b;
}
编译
gcc -c add.c -o add.o
方式一:
main.c
#include <stdio.h>
#include "add.h"
int main()
{
int c = add(1, 2);
printf("c = %d\n", c);
return 0;
}
编译不通过
g++ main.cpp add.o
方式二:
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
#include "add.h"
#ifdef __cplusplus
}
#endif
int main()
{
int c = add(1, 2);
printf("c = %d\n", c);
return 0;
}
编译通过
g++ main.cpp add.o
执行
./a.out
__cplusplus
宏__cplusplus是c++编译器内置的宏,可以在编译c/c++代码时判断当前编译器是否为c++编译器
编译方式
C++编译方式将函数名和参数列表编译成目标名(存在重载)
C编译方式将函数名编译成目标名(不存在重载)