3

I'm looking for how can I write identifiers name with characters like [ ' " or #.

Everytime that I try to do that, I give the error:

error: macro names must be identifiers

But learning about gcc, I found this option:

-fextended-identifiers

But it seems not working like I wanted, please, somebody know how to accomplish that?

4

3 回答 3

2

标识符不能包含此类字符。它在语言语法中是这样定义的,标识符是字母、数字或下划线(并且不能以数字开头以避免与文字数字产生歧义)。

如果有可能,这将与 C 编译器(使用 [ 表示数组)和 C 预处理器语法(使用 #)发生冲突。扩展标识符扩展只允许在标识符中使用非语言语法禁止的字符(基本上是 unicode 外来字母等)。

但是,如果您真的非常想这样做,nothings 会禁止您使用自己的“扩展宏预处理器”预处理源文件,实际上是创建一种新的“C 类”语言。这看起来是个糟糕的主意,但做起来并不难。然后你很快就会自己明白为什么这不是一个好主意......

于 2011-01-19T19:44:25.680 回答
1

根据此链接-fextended-identifiers仅启用对标识符的 UTF-8 支持,因此对您的情况没有帮助。

因此,答案是:您不能在宏标识符中使用此类字符。

于 2011-01-19T19:40:03.440 回答
0

Even if the extended identifier characters support was fully enabled, it wouldn't help you get characters such as:

[ ' " #

enabled for identifiers. The standard allows 'universal character names' or 'other implementation-defined characters' to be part of an identifier, but they cannot be part of the basic character set. Out of the basic character set, only _, letters and digits can be part of an identifier name (6.4.2.1 Identifiers/General).

于 2011-01-19T20:03:33.327 回答