C 多個標頭檔案重複定義變數問題

2021-06-26 08:14:29 字數 765 閱讀 2877

head_file1.h的內容如下:

#ifndef _head_file1_h

#define _head_file1_h

#define max 100

#endif/*** _head_file1_h*/

head_file2.h的內容如下:

#ifndef _head_file2_h

#define _head_file2_h

#define max 200

#endif/*** _head_file2_h*/

test_headfile.cpp的內容如下:

#include

#include"head_file1.h"

#include"head_file2.h"

using namespace std;

int main()

{cout<<"max is "<< max <<".\n"《編譯test_headfile.cpp:g++ -o test_headfile test_headfile.cpp

執行test_headfile結果如下:

max is 200.

.cpp檔案包含的多個標頭檔案中有相同的定義時,以包含的最後乙個標頭檔案為準。

標頭檔案定義變數的問題

這次又犯了標頭檔案定義變數的錯誤問題,關鍵是linux環境下還不報錯!例子如下 在common config.h標頭檔案中定義了如下變數 int channel num 1024 後在檔案中的乙個函式中修改此變數為120,但是退出此函式後,列印出變數的值,竟然依舊是1024。正確的做法是在commo...

ifndef 標頭檔案重複定義

ifndef只能保證重複包含時,只包含一次。但snake.cpp和main.cpp是分別進行編譯的,snake.cpp裡的 define對於main.cpp不起作用。也就是說在編譯main.cpp時,snake.h是第一次包含,因此又有乙個ch,相互鏈結時就會發現重定義。正確的作法應該這樣 1 在s...

C 標頭檔案包含變數時,多重定義問題!

multiple definition of 在標頭檔案中.h中包含有變數定義的時候,一般是想作為全域性變數來使用,但是使用中總是出現multiple definition of的問題,看一下 oracleinfclass.h ifndef oracleinfclass h define oracl...