2011-12-08 40 views
4

Apperantly傳言說,有可能在#包括℃的單線(可能具有GCC)如何#包括在C語言的單線

例如

#include <file.h> 5 

得到像第5行。在cpp文檔中找不到類似的東西。

或者哪個預處理器允許做這樣的醜陋的黑客?

+0

我聽到了同樣的謠言,可惜它似乎並不正確。你必須編寫你自己的代碼預處理器。 – buddhabrot

回答

2

對於這個問題,我認爲GCC或任何其他編譯器都不可能。

+0

+1,但我也有一個猜測。 –

2

難道你

#line lineno filename 

指令混淆呢?

+1

好吧,「困惑」:這可能是他想要的。 – buddhabrot

+0

#line很好理解,它修改了明顯的錯誤位置(例如源代碼行的起源)。我們正在辦公室進行辯論。有一個人聲稱可以在ProC/Oracle&gcc中使用。但是我們目前無法證明他是錯的;-) – Dima

+3

@Dima:簡單:他必須證明自己是對的,而不是相反。 –

0

如果你想要一些可移植的東西,你可以簡單地創建一個行文件 - 我也不知道一種方法來完成你完全不知道的事情。

+0

是不是最低2線,因爲文件必須以空行結束? – Pubby

+1

@Pubby編號該文件必須以完整的一行結束,但是;如果文件中的最後一個字符不是「\ n」,那麼在文本模式下讀取文件時,行爲是不確定的。 (混淆可能是因爲許多Windows程序將CRLF視爲行分隔符,而不是行終止符。但據我所知,這不是視覺工作室中的庫的情況。) –

+0

@James:_was_未定義。在C++ 11中定義。 – MSalters

3

我從來沒有聽說過這樣的功能,而且我當然沒有遇到任何支持它的預處理器。

在任何情況下,它聽起來像一個真的壞主意。如果有人在file.h的頂部插入一個空白行......如果您想改變計劃,您會很高興嗎?

如果你控制file.h,我認爲最好的辦法是提取線5成一個單獨的頭,並#include它既爲file.h和你的主程序。