读书人

C++中调用C的代码,去掉extern为什么编

发布时间: 2012-05-28 17:59:33 作者: rapoo

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的区别么?
[解决办法]
楼主还是去百度里学习学习吧,看你这个理解程度无解。

读书人网 >C语言

热点推荐