最近在看mingw32中的標頭檔案實現,發現函式在標頭檔案中定義,多檔案編譯不會衝突。
發現其函式實現皆有修飾符static,實現只在單檔案可見,防止多檔案包含相同標頭檔案函式定義衝突。
另外,類定義中的函式實現不會出現定義衝突的現象,即使兩個相同的類名,相同的函式名。
錯誤情況:包含3個檔案, my.h t1.cpp t2.cpp
#ifndef __my_h__
#define __my_h__
int __max( int a, int b)
#endif
#include "my.h"
main()
#include "my.h"
使用g++ t1.cpp t2.cpp -o a.exe
會報錯,提示定義衝突
將 my.h 做如下更改:
#ifndef __my_h__
#define __my_h__
static int __max( int a, int b)
#endif
編譯正常通過 vc使用jsoncpp標頭檔案衝突問題
編譯時出現 1 d program files x86 microsoft visual studio 9.0 vc include xdebug 32 warning c4229 使用了記時錯誤 忽略資料上的修飾符 1 d program files x86 microsoft visual st...
將函式實現放在標頭檔案中
因為多個原始檔包含了含有函式定義的標頭檔案,在編譯的時候,每個原始檔都會包含乙份函式定義,在鏈結時編譯器不知道需要連線哪乙份函式定義。解決方法有三個 1.inline關鍵字 可以用關鍵字inline修飾函式定義,例如 inline int add int x,int y 使用inline關鍵字,編譯...
標頭檔案相關函式
2.6.30.4的標頭檔案的位置和2.6.25.8的不一樣,除去核心原始碼下的include目錄外,在arch arm mach s3c2410 和arch arm plat s3c24xx 目錄下都有include目錄的。include 是在linux include linux下面尋找原始檔。i...