混合使用C、C++和匯編語之:在C++中使用C頭文件
12.3在C' target='_blank' style='cursor:pointer;color:#D05C38;text-decoration:underline;'>C++中使用C頭文件
本節(jié)描述如何在C++代碼中使用C頭文件。從C++調(diào)用C頭文件之前,C頭文件必須包含在extern"C"命令中。本節(jié)包含以下兩部分內(nèi)容:
·在C++中使用系統(tǒng)的C頭文件;
·在C++中使用自定義的C頭文件。
12.3.1在C++中使用系統(tǒng)C頭文件要包括標(biāo)準(zhǔn)的系統(tǒng)C頭文件,如stdio.h,不必進(jìn)行任何特殊操作。只有使用extern"C"命令,由編譯器自動(dòng)包含標(biāo)準(zhǔn)C頭文件。例如:
#include<stdio.h>
intmain()
{
...//C++代碼
return0;
}
如果使用此語法包含頭文件,則所有庫名都放在全局命名空間中。
C++標(biāo)準(zhǔn)規(guī)定可以通過特定的C++頭文件獲取C頭文件。這些文件與標(biāo)準(zhǔn)C頭文件一起安裝在install_directory\RVCT\Data\2.0\build_num\include\platform目錄下,可以用常規(guī)方法進(jìn)行引用。例如:
#include<cstdio>
intmain()
{
...//C++代碼
return0;
}
在ARMC++中,這些頭文件中包含(#include)C頭文件。如果使用此語法包含頭文件,則所有C++標(biāo)準(zhǔn)庫名都在命名空間std中定義,包括C庫名。這意味著必須使用下列方法之一來限定所有的庫名稱。
·指定標(biāo)準(zhǔn)命名空間,例如:
std::printf("example\n");
·使用C++關(guān)鍵字“using”向全局命名空間輸入一個(gè)名稱:
usingnamespacestd;
printf("example\n");
·使用編譯程序選項(xiàng)--using_std。
12.3.2在C++中使用自定義的C頭文件要包含自己的C頭文件,用戶必須將#include命令包在extern"C"語句中??梢杂靡韵路椒ㄍ瓿纱瞬僮鳎?/p>
①在#include文件之前使用extern,如下例所示。
//C++code
extern"C"{
#include"my-header1.h"
#include"my-header2.h"
}
intmain()
{
//...
return0;
}
·將extern"C"語句添加到頭文件,如下例所示。
/*Cheaderfile*/
#ifdef__cplusplus/*InsertstartofexternCconstruct*/
extern"C"{
#endif
/*Bodyofheaderfile*/
#ifdef__cplusplus/*InsertendofexternCconstruct*/
}/*TheCheaderfilecannowbe*/
#endif/*includedineitherCorC++code.*/