標頭檔案函式實現衝突

2021-09-20 18:51:38 字數 639 閱讀 5202

最近在看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...