为什么枚举常量没有链接?

2023-12-01

我试图理解的联系enumeration constants并且在标准中找不到明确的答案N1570. 6.2.2(p6):

以下标识符没有链接:声明为的标识符 是对象或函数以外的任何东西;声明的标识符 作为函数参数;对象的块作用域标识符 声明时不带存储类说明符extern.

所以我需要理解常量不是对象。对象定义为3.15:

执行环境中的数据存储区域,内容 可以代表值

Also 6.2.2(p4)(强调我的):

对于使用存储类说明符 extern 声明的标识符 该标识符的先前声明可见的范围,31) 如果先前的声明指定了内部或外部链接,则 稍后声明中标识符的链接与 先前声明中指定的链接。如果没有事先声明 可见,或者如果先前的声明指定没有链接,则 标识符具有外部链接.

Anyway 6.4.4.3(p2):

声明为枚举常量的标识符具有类型int.

结合所有我不明白的原因

enum test {
    a = 1
};

extern int a; //compile-error. UB?

不编译?我期望a具有外部联系。

现场演示

行为是否明确定义?您能提供解释这一点的标准参考吗?


声明为枚举常量的标识符的类型为 int

这并不意味着它是 int 类型的变量

but

extern int a;

说有一个类型的变量int named a,这与枚举常量冲突


为什么枚举常量没有链接

出于同样的原因,常量 123 (也具有类型int,但无论如何)也没有联系

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么枚举常量没有链接? 的相关文章

  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • PHP 和 mssql 库可以从 varchar 列中选择超过 256 个字符吗?

    是否有解决方法 除了将列类型更改为文本字段之外 使用 PHP 和 mssql 库选择大型 varchar 字段 例如 varchar 500 PHP 真的将字符数限制为 255 吗 还有比这更拉回来的方法吗 从PHP页面来看 问题似乎出在W
  • 有没有什么方法可以只使用 CSS 来获得倾斜的盒子阴影?

    我想要类似徽标的东西CSS 技巧 但使用 CSS 而不是图像文件 因此可以调整其大小 这可能吗 像这样的图片 纯 CSS 带切角的倾斜阴影 这花了一点时间来完善 但现在横幅下有一个倾斜的阴影 也有切角和多个边框 所有效果 包括背景 徽标和阴
  • 使用自定义选择器和逻辑进行 JQuery 验证

    是否可以将 JQuery Validate 与自定义选择器和验证逻辑一起使用 大致如下 myForm validate rules myattr foo function content return content val contain
  • CLR 在运行时使用的 dll

    我有一个引用 NET DLL 的 C 应用程序 如果这个 DLL 存在于我的应用程序中bin目录和 GAC 然后 CLR 在运行时会选择哪一个 如果 GAC 有最新版本 是否会使用该版本而不是bin 我如何强制 CLR 始终使用我的 CLR
  • 无法阻止被动事件侦听器内的默认行为

    我在用着Framework7 可排序列表它运行良好 只是当列表更改时它不会触发事件 所以我正在尝试一些内置事件 sortable handler on touchstart function e e preventDefault alert
  • FlashDevelop、Haxe 导入 CreateJS?

    我刚刚开始尝试 Haxe 制作一个网络应用程序 我想使用 CreateJS 它有一个 Haxe extern lib 东西 我使用 FlashDevelop 作为我的 IDE 所以我在FlashDevelop中创建了一个新的Haxe JS项
  • 从 jquery ui datepicker maxDate 选项获取日期对象

    通过使用以下 var maxDate selector datepicker option maxDate 输出可以是 1M 20Y 12 12 2013 或更多的任何内容 1M 和 20Y 示例是否可以与本机 JavaScript 一起使
  • Actionscript 3:self 事件侦听器是否会阻止对象被垃圾回收?

    我知道事件侦听器和对对象的引用将阻止垃圾收集器处理对象 我的问题是 放置在对象上的事件侦听器侦听同一对象是否会阻止该对象被垃圾收集 我问是因为这似乎发生在我身上 我正在破坏对某个对象的所有引用 但当其计时器关闭时我仍然看到痕迹 同时 这似乎
  • 如何使用 Angular CLI 安装特定版本的 Angular?

    我搜索了 google 和 Angular cli 文档 但找不到任何使用 Angular CLI 安装特定版本 Angular 的方法 有可能吗 为了回答您的问题 我们假设您对特定的感兴趣angular版本而不是特定的角度 cli版本 A
  • 如何解决MongoDB实例化失败的问题[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我关注了 MongoDbDocs设置我的第一个 MongoDb 当我使用命令启动 MongoDB 时 C Program Files MongoDB Server 3 4 bin mong
  • jpeg 的有效 base64 字符串

    这是有效的 jpeg base64 字符串吗 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAAD 2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgk
  • 如何使 JFrame 内的 JPanel 填充整个窗口?

    在下面的示例中 如何让 JPanel 占用所有 JFrame 我将首选尺寸设置为 800x420 但实际上只填充了 792x391 import java awt Color import java awt Dimension import
  • 带单选按钮的 Android 颜色选择器

    我想创建一组单选按钮来选择颜色 像这样的东西 我怎样才能实现这样的目标 我在原始 RadioButton 上没有找到任何颜色属性 我必须创建自定义控件吗 如果是 有人可以提示我基本步骤 以便我可以尝试一些新的研究吗 我对 Android 很
  • 如果连续行之间的差异满足条件,则计算列的总和

    这是帖子中的一个持续问题如果第二行满足条件 则从每组中删除第一行 下面是一个示例数据集 df lt data frame id c 9 9 9 5 5 4 4 4 4 4 20 20 Date c 11 29 2018 11 29 2018
  • Oracle触发器更新同一个表

    我有一个触发器 我试图用它来更新它侦听的同一个表 但是 在提交创建或更新后 我收到以下错误 ORA 04091 table username ADDRESSES is mutating trigger function may not se
  • 无法保留 DStream 以供下一批使用

    JavaRDD
  • C# 和 Java 之间的 Base64 区别

    image是图像文件的字符串 我的 C 代码如下 Convert ToBase64String image 并用Java编写代码如下 org apache commons codec binary Base64 encodeBase64 i
  • 在 R 中的所有列名称中替换多个句点[重复]

    这个问题在这里已经有答案了 我有以下数据框 df data frame a dfs 56 c rep a 8 rep b 5 rep c 7 rep d 10 b fqh 28 rnorm 30 6 2 c 34 2 fgs rnorm 3
  • 在 Python 中解析 CS:GO 脚本文件

    我正在使用 CS GO 中的一些脚本文件 我必须从该文件中获取一些有用的信息并将这些数据导入到我的 python 应用程序中 以下是txt数据格式的示例 https steamcdn a akamaihd net apps 730 scri
  • 为什么枚举常量没有链接?

    我试图理解的联系enumeration constants并且在标准中找不到明确的答案N1570 6 2 2 p6 以下标识符没有链接 声明为的标识符 是对象或函数以外的任何东西 声明的标识符 作为函数参数 对象的块作用域标识符 声明时不带