[英]Using macros to extract the info that the typeof operator give us (in C language)
我有一個我不知道是否有解決方案的問題(使用C語言)...
我想將一個宏與typeof“ function”組合起來以在編譯時獲取類型的名稱(因為C我沒有使用polimorphism和其他類型的抽象,這對編譯器來說是個難題)...
我的問題:這似乎是不可能的,我每次嘗試,我只會得到像
有可能做到嗎? 它僅用於實驗,但我認為在許多代碼中使用可能會很有趣。
提前致謝 :)
簡短答案:您不應該。 typeof()是C語言的GCC擴展,將無法移植。
無論如何,如果您仍要使用它,就無法按照您的描述進行操作。 David Thornley的回答向您說明了原因。
C和C ++具有多個編譯階段,而在較后階段生成的信息對於較早版本不可用。 宏替換相對較早,並且通常是預處理器的一部分。 typeof()
,如果您使用的是通過此類擴展實現C的系統,它將應用於文字或變量的類型。 在解析了預處理器中的內容之后,便會在稍后的階段中生成該信息。
因此,您將沒有可在宏中使用的typeof()
信息,並且您將不得不找到另一種方法來完成您想做的事情(類似於C ++模板?)。
我假設您正在談論GCC對C的typeof
-construct擴展。
不幸的是,我認為這不會對您嘗試執行的操作有所幫助-它不是運算符,它無法評估某些價值。
它只能在某些情況下使用,(據我所知)它與預處理器無關:
在可以使用typedef名稱的任何地方都可以使用typeof-construct
gcc具有gcc typeof keyword
。 使用它,您不再需要編譯C,而是像C一樣有點不同但又不是完全C的東西。
使用風險自負。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.