我知道inlcude_next碰巧是C預處理器的GNU擴展。 我正面臨使用MSVC編譯Gnu庫代碼的問題。例如,有一個stdio.h頭文件或者GNU-like <stdio.h>
。當使用MS編譯器編譯時,我得到了invalid preprocessor command 'include_next'
這很好,因爲沒有什麼像windows的#include_next
指令。做#include_next的主要目的是希望在你的項目中創建一個名爲stdio.h的文件,並且將會包含這個文件,而不是默認的頭文件。include_next在MSVC中導致問題的預處理器指令
所以,我試了2個選項: 1)在所有文件中註釋掉這一行// #include_next <stdio.h>
。 2)或者用##include <stdio.h>
替換#include_next。
我不知道是否選擇1)會導致任何問題(最終鏈接器錯誤)。 關於2),我得到了fatal error C1014: too many include files : depth = 1024
這也很好。爲此,我將使用wrapper #ifndef
作爲包括警衛或# pragma once
指令。
以下是我的顧慮:
我是否需要寫這樣#include <stdio>
或頭文件stdio.h裏面的聲明?編譯Windows時它有什麼意義嗎?直接在需要的所有源文件中直接執行是否足夠了,這樣它就可以繞過Visual C標準頭,而使用我的? 而且,如果我完全省略語句include_next,可能會發生什麼?
我的主要目標是成功編譯使用MSVC的GNU庫。 如果我錯過了某些東西或者可能會更多地瞭解這個主題,請糾正我。
「我的目標是成功編譯使用MSVC的gnu庫」 - 請參閱http://gnuwin32.sourceforge.net/ – 2013-03-08 13:31:30
@roger_rowland我的意思是我所擁有的代碼具有include_next。他們不是確切的GNU圖書館。我可以從上面的鏈接中使用。但應用程序需求是不同的 – Capricorn 2013-03-08 13:36:42