如何定義標頭檔案以防重定義的錯誤

2021-06-13 10:15:10 字數 817 閱讀 4963

typedef struct _ortpmemoryfunctionsortpmemoryfunctions;

標頭檔案被多次引用了。比如:這個是在a.h裡,main.c裡引用了a.h 和b.h,而b.h又引用了a.h,如果a.h裡沒有

#ifndef _a_h

#define _a_h

... //這裡包含了typedef sturct _ortpmemoryfunctions

#endif

那麼typedef struct _ortpmemoryfunctions 這段**就會出現兩次。

所以,寫標頭檔案的時候都必須像上面的 #ifndef _a_h 這樣寫。

在編寫程式中檔標頭檔案比較多時容易出出現重複引用,導致函式重複定義的情況。而

且,通常在程式設計的時候將函式定義到乙個單獨的additional.cpp檔案中,主檔案main.cpp只留乙個main函式。

這樣如果直接在main.cpp中呼叫#include「additional.cpp」 必然會出現兩次引用預編譯標頭檔案#include"stdafx.h"的情況。對此解決的辦法是:

(1)最好每乙個cpp檔案對應乙個.h標頭檔案,盡量將函式宣告,類定義,結構體的定義放到標頭檔案中,而將函式的定義放到cpp檔案中.

(2)對於重複引用預編譯標頭檔案的問題,可以將函式的宣告放到additional.h中,而將函式的定義部分放到addtional.cpp中,這樣在主函式main.cpp中直接引用additional.h即可避免stdafx.h重複呼叫的情況。

避免標頭檔案的重定義

假設原始檔test.c中包含a.h和b.h兩個標頭檔案,而a.h和b.h裡又都包含另乙個標頭檔案x.h 很常見 那麼x.h就會被test.c兩次include,如果x.h裡定義了某結構體,如 typedef struct test 預處理 見c編譯過程 後,test.c裡包含兩個struct tes...

OpenMAX IL 標頭檔案的定義

il v1.1.2 中每個標頭檔案的作用是什麼 omx types.h data types used in the openmax il omx core.h openmax il core api omx component.h openmax il component api omx audi...

標頭檔案中定義變數

在標頭檔案中定義了乙個變數,若另乙個檔案再 int 變數名 則會再產生乙個相同變數的定義,在linux環境中編譯時會發生如 menu.o sbss 0x0 multiple definition of is refresh living time thread created main.o sbss...