C通用宏名称 - gcc -fextended-identifiers

时间:2011-01-19 19:35:20

标签: c gcc macros identifier

我正在寻找如何使用['“或#。

等字符编写标识符名称

每当我尝试这样做时,我都会给出错误:

  

错误:宏名称必须是标识符

但是了解gcc,我找到了这个选项:

  

-fextended的标识符

但似乎没有像我想的那样工作,拜托,有人知道如何实现这个目标吗?

3 个答案:

答案 0 :(得分:2)

标识符不能包含此类字符。它在语言语法中定义,标识符是字母,数字或下划线(并且不得以数字开头以避免与litteral数字模糊)。

如果可能,这将与C编译器(使用[for arrays]和C预处理器语法(使用#)冲突)。扩展标识符扩展仅允许使用标识符内部语言语法禁止的字符(基本上是unicode外部字母等)。

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

答案 1 :(得分:0)

根据this link-fextended-identifiers仅支持对标识符的UTF-8支持,因此在您的情况下无效。

所以,答案是:你不能在宏标识符中使用这些字符。

答案 2 :(得分:0)

即使完全启用了扩展标识符字符支持,也无法获得如下字符:

[ ' " #

启用标识符。该标准允许“通用字符名称”或“其他实现定义字符”作为标识符的一部分,但它们不能是基本字符集的一部分。在基本字符集中,只有_,字母和数字可以是标识符名称的一部分(6.4.2.1标识符/常规)。