2011-11-07 17 views
1

這兩個代碼段代碼在這裏意味着什麼?奇怪的宏和沒有操作變量的用法?

#define HTTPH(a, b, c, d, e, f, g) char b[] = "*" a ":"; 
void function(char *p) { 
    (void)p; 
} 
+1

請不要一次問兩個問題,這些問題顯然不同,並給他們一個正確描述他們的標題。 –

回答

3

首先是通過宏字符串連接。它類似於:

#define STR3 STR1 STR2 

有了這個預處理器將串連STR1 & STR2和地方STR3的使用它。
Example.

第二語法:

void function(char *p) 
{ 
    (void)p; 
} 

手段指針變量p目前未被使用。未使用的變量很少導致編譯器警告,這樣的結構通常用於擺脫未使用的變量警告。

With (void)p;指針p用於一個語句中(實際上它什麼都不做)但它滿足了編譯器該變量在某處使用,因此它不會產生警告。

+1

我已經看到,以避免未使用變量的編譯器警告。 –

+0

@PatrickB .:是的! –

2

"*" a ":"是簡單的字符串連接。就像"a" "b" "c"相當於​​。

void函數沒有做任何事情,但它可能是其他地方的佔位符。你需要展示更多的上下文才能得到正確的答案。