我試圖做一些概念上類似於這個,但似乎無法得到它的工作(錯誤顯示在最後)任何想法?C編程:預處理器,宏作爲標記
#include <stdio.h>
int main(int argc , char const *argv[])
{
int abc_def_ghi = 42;
#define SUFFIX ghi
#define VAR(prefix) prefix##_def_##SUFFIX
printf("%d\n" , VAR(abc));
return 0;
}
// untitled:8: error: ‘abc_def_SUFFIX’ undeclared (first use in this function)
'const argv'?我第一次看到這樣的事情!這個想法看起來很不錯,但我不確定我是否喜歡它:它使'main'不符合要求,並且阻止我做我從未做過的事情;) – pmg 2009-11-20 01:43:43
這不是不符合要求。 'argv'可以被聲明爲等同於'char * argv []'(C99 5.1.2.2.1)的東西,並且除了允許'main()'允許做什麼之外,在那裏添加'const'並不會改變任何東西它(沒有演員)。請記住,指向非const的指針可以轉換爲指向常量沒有問題的指針 - 直至這些指針的值將相等(6.3.2.3/2)。 – 2009-11-20 08:42:55
對,謝謝邁克爾。反過來(刪除'const')會導致它不符合規定。我開始喜歡它! – pmg 2009-11-20 09:43:02