我正在寻找如何使用['“或#。
等字符编写标识符名称每当我尝试这样做时,我都会给出错误:
错误:宏名称必须是标识符
但是了解gcc,我找到了这个选项:
-fextended的标识符
但似乎没有像我想的那样工作,拜托,有人知道如何实现这个目标吗?
答案 0 :(得分:2)
标识符不能包含此类字符。它在语言语法中定义,标识符是字母,数字或下划线(并且不得以数字开头以避免与litteral数字模糊)。
如果可能,这将与C编译器(使用[for arrays]和C预处理器语法(使用#)冲突)。扩展标识符扩展仅允许使用标识符内部语言语法禁止的字符(基本上是unicode外部字母等)。
但如果你真的真的想要这样做,那么就禁止你用你自己的“扩展宏预处理器”预处理你的源文件,实际上创建了一种新的“C like”语言。这看起来很糟糕,但这并不难。那么你很快就会看到为什么这不是一个好主意......
答案 1 :(得分:0)
根据this link,-fextended-identifiers
仅支持对标识符的UTF-8支持,因此在您的情况下无效。
所以,答案是:你不能在宏标识符中使用这些字符。
答案 2 :(得分:0)
即使完全启用了扩展标识符字符支持,也无法获得如下字符:
[ ' " #
启用标识符。该标准允许“通用字符名称”或“其他实现定义字符”作为标识符的一部分,但它们不能是基本字符集的一部分。在基本字符集中,只有_
,字母和数字可以是标识符名称的一部分(6.4.2.1标识符/常规)。