2012-11-26 68 views
3

是否有一種方法可以安全地檢查當前範圍中是否存在某個指定變量(我們稱之爲「foo」)?我想要有一個宏,如果它存在就使用「foo」,否則做一些其他的事情。我可以在這裏使用任何運行時技巧嗎?我可以檢測宏中是否存在局部變量?

(實際的上下文是試圖解決this problem,但我意識到,一個可能是這其中的一個特例,所以一個單獨的問題似乎也很有趣。)

+0

你可以讓你的邏輯獨立於你的建築嗎? –

+0

@tAmirNaghizadeh:不知道這是什麼意思? –

+0

一些如何在編譯器的幫助下做你想做的事情,喜歡Linux內核在GCC幫助下做什麼,或者寫你自己的檢查器。 –

回答

2

不幸的是,沒有。編譯器負責解析變量名併爲其分配範圍,並且預處理器在編譯器之前運行。所以它無法訪問這些信息。

+1

公平點。但也許這個宏是一個紅鯡魚;有沒有宏可以設置的任何聰明的運行時間技巧?或者是否有人試圖檢測到一個註定要編譯時錯誤的變量? –

+1

@BenZotto我不知道任何。而且我多年來看起來很難,因爲它可以編寫更多可移植的代碼。我爲此使用了GNU Autoconf,但它能更好地分辨特定變量或函數是否可直接在預處理器代碼中使用。但這似乎不可能。 –

相關問題