C語言編程之extern "C"

1.被extern 「C」限定的函數或變數是extern類型的;

2.被extern 「C」修飾的函數或變數是按照C語言編譯和鏈接的。

C++和C在編譯時的區別:

C++支持函數重載,而C不支持。

例如:函數 viod foo(int x, inty);在C++中編譯后在符號庫中的名字是_foo_int_int,而C編譯後生成的名字是_foo.

一句話概括extern 「C」的目的:

實現C++和C及其他語言的混合編程。

具體用法:

1.在C++中引用C語言中的函數和變數,在包含C語言頭文件是,需進行下列處理:

extern "C"

{

#include "cExample.h"

}

2.在C中引用C++語言中的函數和變數,C++頭文件中需添加extern 「C」,而在C語言中不能直接引用聲明了extern「C」的頭文件,而應該僅將C文件中在C++中定義的extern 「C」函數聲明為extern類型

Advertisements

例如:

C++頭文件

#ifndef CPP_EXAMPLE_H

#define CPP_EXAMPLE_H

extern "C" int add(int x, int y);

#endif

C++實現文件cpp_Example.cpp

#include "cppExample.h"

int add(int x, int y)

{

return x + y;

}

C 實現函數Cfile.c

extern int add(int x, int y)

int main(int argc, char* argv[])

{

add(2, 3);return 0;;

}


Advertisements

你可能會喜歡