有没有一种使用C/C++预处理器“字符化”某些内容的方法?您可以通过以下方式进行“字符串化”:
那么,是否有一种使用相同原理的“字符化”方法呢?
#define STRINGIFY(x) #x
那么,是否有一种使用相同原理的“字符化”方法呢?
#define STRINGIFY(x) #x
Something like:
#define CHARa() 'a'
#define CHARb() 'b'
#define CHARc() 'c'
// ...
#define CHARIFY(x) CHAR ## x()
CHARIFY(a)
CHARIFY(%)
必须扩展为类似于PREFIX%SUFFIX
的内容,而不是令牌串联(因为%不能成为令牌的一部分)。然而,令牌序列PREFIX a SUFFIX
(同样不需要串联)也必须是有效的常量表达式。 - MSalters
(#x [0])
是指x列表的第一个元素,(length)
表示计算列表的长度。 - user3175411("string literal"[0])
视为常量表达式。 - user3175411static int x = "a"[0];
,你会发现你得到了一个非常量初始化器的错误。对于标准,请查看c99的6.6p6和6.6p7,你会发现"a"[0]不在允许的常量表达式列表中。 - ouah