2012-03-30 83 views
0

假設我有一個定義MC_SERVER1,MC_SERVER2,MC_SERVER3的列表,我將如何循環以獲取每個的內容。我也不知道我會有多少人。我可能有3個或10.這是C語言編程循環直通定義

說我有 DEFINE MC_SERVER1 = 「mc1.sdsds.com」 DEFINE MC_SERVER2 = 「mc2.sdsds.com」

我該怎麼辦環通商場。

+3

簡短的回答:你不知道。你想解決什麼問題? – Mysticial 2012-03-30 04:19:24

+0

定義「內容」。你的宏是什麼?常量?表達式?請更詳細地解釋你打算完成什麼。 – vsz 2012-03-30 04:22:14

+1

我想他的意思是''for(i = 0; i iehrlich 2012-03-30 04:27:55

回答

3

定義不這樣工作。它們在編譯時進行評估,而不是執行時間,因此它們的實例將被替換爲它們的值。

+0

'#define GETCONFIGVALUE(key,sect,var)\ config_get_value(key,sect,var); \ if(strlen(var)> 0)\ TRACE(TRACE_DEBUG,「key」#key「section」#sect「var」#var「value [%s]」,var) ' – 2012-03-30 04:31:44

+0

這就是我在源代碼中查看,所以它讓我相信這些是來自配置文件的值 – 2012-03-30 04:32:41

+0

@Craig Sparks:'#key'被稱爲字符串化(http://gcc.gnu.org/onlinedocs/cpp/Stringification.html #Stringification)。除非你確信自己知道自己在做什麼,否則你應該避開它。 – vsz 2012-03-30 04:34:22

0

有可能通過串聯技術(##)和字符串化(#)獲得與宏相似的效果,但對於不使用宏可能會更好。

查看Variable names in C的例子。