gpt4 book ai didi

c - 为什么 _Generic 语句被视为表达式而不是宏?

转载 作者:行者123 更新时间:2023-11-30 20:38:11 25 4
gpt4 key购买 nike

我正在设置一些大宽度整数类型,因此我大量使用宏来使这些类型尽可能像基本整数类型一样可用。我一直遇到的一个问题是,如果我在宏扩展中大量使用 _Generic 表达式,而不是最小化 _Generic 使用并更多地依赖宏和可能的多个版本的操作,我可以获得最直接且易于实现的解决方案。

所以,我的问题是 _Generic 表达式实际上是否与宏相同。 _Generic 是否存在与宏无关的优化器问题?通过其他机制进行编译是否存在差异?

让我紧张的是_泛型在概念上几乎与宏相同,那么为什么它们在语法上是表达式呢?

我知道这个问题的答案与编译器相关,但我想所有合理的编译器都会有类似的行为。

一些回复建议我应该解释 _Generics 和宏对于我的问题有何相似之处。两者都用特定于情况的代码替换它们的调用。宏对于如何生成替换有更通用的规则,其中 _Generic 必须根据第一个输入的类型从特定输入中进行选择。要点是,两者在概念上都是预处理思想,因为它们确定实际编译的代码。

最佳答案

如果 _Generic 和宏对您来说很相似,因为它们可以在运行时之前求值,您是否也认为 sizeof (VLA 除外)、 _Static_assert或常量表达式与宏类似?

请记住,在预处理时,实现不了解类型、关键字等,而仅处理标记。

关于c - 为什么 _Generic 语句被视为表达式而不是宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com