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

发布于 2024-10-12 20:20:58 字数 226 浏览 4 评论 0原文

我正在寻找如何使用 [ ' " 或 # 等字符编写标识符名称。

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

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

但是了解 gcc,我发现了这个选项:

-f扩展标识符

但它似乎没有像我想要的那样工作,请问有人知道如何实现这一点吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一世旳自豪 2024-10-19 20:20:58

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

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

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

Identifiers can't include such characters. It is defined that way in the language syntax, identifiers are letters, digits or underline (and mustn't begin with a digit to avoid ambiguity with literal numbers).

If it was possible this would conflict with the C compiler (that uses [ for arrays) and C preprocessor syntax (that uses #). Extended identifiers extension only allow using characters non forbidden by the language syntax inside identifiers (basically Unicode foreign letters, etc.).

But if you really, really want to do this, nothing forbids you to preprocess your source files with your own "extended macro preprocessor", practically creating a new "C like" language. That looks like a terrible idea, but it's not really hard to do. Then you'll see soon enough by yourself why it's not a good idea...

蓝眼睛不忧郁 2024-10-19 20:20:58

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

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

According to this link, -fextended-identifiers only enables UTF-8 support for identifiers, so it won't help in your case.

So, answer is: You can't use such characters in macro identifiers.

焚却相思 2024-10-19 20:20:58

即使完全启用了扩展标识符字符支持,它也不会帮助您获取诸如:

[ ' " #

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

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文