C++中调用C的代码,去掉extern为什么编译还是通过。
C++调用C代码,必须包含extern C{}
为什么平时调用printf()这些C函数,头文件stdio.h不用加上extern C{}呢
下面是我在网上搜到的例子,我把extern C{}去掉,编译也是能通过。
假设一个C的头文件cHeader.h中包含一个函数print(int i),为了在C++中能够调用它,必须要加上extern关键字(原因在extern关键字那节已经介绍)。它的代码如下:
#ifndef C_HEADER
#define C_HEADER
extern void print(int i);
#endif C_HEADER
相对应的实现文件为cHeader.c的代码为:
#include <stdio.h>
#include "cHeader.h"
void print(int i)
{
printf("cHeader %d\n",i);
}
现在C++的代码文件C++.cpp中引用C中的print(int i)函数:
extern "C"{
#include "cHeader.h"
}
int main(int argc,char** argv)
{
print(3);
return 0;
}
我把extern "C"{}给去掉了。
为什么编译还能通过呢。
g++ -o output C++.cpp cHeader.c
另外,我把.cpp .c .h都放在同个目录下了,编译时为什么还要加上cHeader.c这个文件呢?去掉就编译通不过
[解决办法]
楼主知道g++和gcc的区别么?
[解决办法]
楼主还是去百度里学习学习吧,看你这个理解程度无解。