2010-12-22 56 views
1

我對C頭文件的相對位置有疑問。我注意到如果C頭文件被放置在一個特定的位置,我的代碼就可以工作,否則它會失敗而沒有錯誤。C頭文件的位置

任何原因爲什麼?對不起,新手在這裏問。

+0

「特定位置」是什麼意思? – 2010-12-22 18:49:21

+0

失敗在哪裏?彙編?執行時? – 2010-12-22 18:50:00

+0

嗨,指的是代碼中C頭文件的位置,例如#include ,#include ,#include Poliquin 2010-12-22 19:04:07

回答

4

問題是,在C和C++中導入標頭基本上是代碼插入,類似於一個宏,進入正在編譯的文件中的那一點。

如果兩個不同的頭文件定義了相同的符號(例如,頭文件有幾十個不同的可能的失敗場景),那麼會出現編譯器錯誤。您沒有提供足夠的信息來追蹤您的具體問題,但通常,頭文件訂單不應該問題 - 除非頭文件寫得不好。

我建議你對你的頭文件進行一個非常全面的檢查。

3

沒有足夠的信息;我建議編譯時會有很多警告(例如,如果使用gcc),並關注它們。例如,你可以重新定義某種類型,例如一個結構,具有不同的大小和破壞內存。假設「無故障錯誤」意味着崩潰。警告會告訴你,你正在重新定義一些東西。

請務必注意所有編譯器警告。

0

這取決於您的編譯器在哪裏教授檢查它們。在大多數典型的Linux系統中,如果你這樣做:

#include <stdio.h> 

編譯器將假定你的意思是:

#include </usr/include/stdio.h> 

而如果你鍵入:

#include "config.h" 

而且config.h中是不在當前目錄中,並且您還沒有教過編譯器(通過編譯器上的-I開關)在其他地方尋找它,它將無法找到它。

或者,也許你想告訴你希望通過一個開關可以使用託管C庫頭像-nostdinc,這意味着教育它要包括一切的位置編譯器。

這可能是值得你花一些時間看你的編譯器的文檔,如果只瞭解更多有趣的事情,它可以做:)

注意,我們在這裏談論頭和包括路徑,而不是聯動