2014-12-08 22 views
-1

我一直在研究VHDL並接觸到聲明(不知道這是否是正確的詞)「for generate」,它允許我實例化N個組件,這導致我認爲:使用簡單的宏可以在C中創建N個變量嗎?

是否有可能在C中做類似的事情?

例如,你可以做這樣的事情:

#define _VAR(x) static int x##_data 
#define STRUCT(x) {index##x, data##x, "Name " #x} 

也許上面的語法錯誤(我累了,要明天起牀很早),但你的想法。

我也100%肯定這是不可能的(不是從我的研究或我所學到的),但我仍然需要問。請問在C類似的語句存在,除了創建一個數組:

#define NVARIABLES(name, x) static int ##name[x] 

如果沒有,你認爲這會有所幫助(我),你可以看到它的下一個C版本(C15 ??: ))。謝謝你的幫助,晚安

+4

它對數組有什麼好處? – MByD 2014-12-08 03:19:20

+3

無法自動創建給定數量的預處理器令牌。你必須至少有一個地方放置了所有的標記(儘管你已經完成了這個工作,你可以在需要的地方添加一些定義和'#include'來產生許多標記)。查看Boost.Preprocessor單元以瞭解可能的概況(C++預處理器與C相同)。 – 2014-12-08 03:19:57

+2

順便說一句,最後一個是'static int name [x]';你不想將'name'粘貼到'int'上 – 2014-12-08 03:21:19

回答

1

有關這方面的更多信息,請查看boost預處理器。

謝謝大家的意見。你一直對我的睡眠不足版本非常有幫助和寬容。

感謝您指出所有信息。

相關問題