枚举可以被认为是不安全的吗? [复制]

2023-12-07

因为我知道一个的每个元素enum有自己的整数值,我尝试过:

enum Foo {
    Red = 0,
    Blue = 1
};

int main(void) {
    enum Foo bar = 2;
    return 0;
}

它......有效。我进一步查看,我认为它具有与以下相同的最小和最大限制int(我开始体验UB之后INT_MAX)。到那时,不是一个enum不比一组好#define是?不过,我在这里也很可能是错的。


An enum变量是一个整数,其类型足够大,足以容纳在中定义的最大值enum定义,不一定int并且可能大于int在某些编译器上。您可以将 int 存储为与存储类型兼容的任何其他值,在运行时不执行任何检查。

如果您提高编译器的警告级别(例如:gcc -Wall -Wextra or clang -Weverything)您可能会收到有关该值与目标的所有定义的枚举常量不同的警告enum.

例如clang调用时会产生这些警告-Weverything:



test.c:7:20: warning: integer constant not in range of enumerated type 'enum Foo' [-Wassign-enum]
    enum Foo bar = 2;
                   ^
test.c:7:14: warning: unused variable 'bar' [-Wunused-variable]
    enum Foo bar = 2;
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举可以被认为是不安全的吗? [复制] 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 找不到appcompat_v7.apk

    当我尝试运行我的程序时 它可以工作 但是当我查看控制台时 它表明它Could not find appcompat v7 apk 我该如何尝试回答这个问题 我刚刚导入了大部分资源 当我这样做时会发生以下情况 Properties gt An
  • 配置 tomcat 仅针对特定 URL 模式进行客户端身份验证

    我有一个应用程序 其中有几个 war 文件 全部部署在同一个 tomcat 服务器上 我需要仅针对一个战争上下文强制客户端身份验证 并且仅针对特定 URL 我在网上阅读了很多内容并在这里阅读了类似的问题 但我得出的结论与我需要的解决方案不匹
  • Pycharm - 在 Django 控制台中自动加载模型

    有没有办法在 pycharm django 控制台中自动加载模型 与 django extensions shell plus 的工作方式类似 在pycharm设置 django控制台设置中你可以有一个启动脚本 这将自动加载 django
  • 函数的运行时间

    我想打印我的函数的运行时间 由于某种原因 我的计时器总是返回 0 谁能告诉我为什么 double RunningTime clock t time1 clock t time2 double t time1 time2 double tim
  • 检查待处理的呼叫

    我想知道是否有任何方法可以检查是否有任何待处理的调用将在某个时刻执行 例如来自 AJAX 请求或计时器的回调 setTimeout 比如检查正在运行 JavaScript 的引擎的整个堆栈 考虑到 AJAX 回调依赖于服务器响应 成功 失败
  • 为什么我可以在 gcc 上声明一个具有预定大小的数组,但不能在 Visual Studio C++ 上声明?

    我想知道为什么我可以在 linux 中执行此代码 但不能在 Visual Studio 上执行 文件 gt main c int size printf Size scanf d size int vec size 和c89或者c99标准有
  • 根据闪亮应用程序的rhandsontable中其他单元格的修改来更改单元格

    我正在尝试构建一个闪亮的应用程序 其中包含rhandsontable 该 rhandsontable 基于我在应用程序内创建的数据帧 在应用程序中 我最初显示该数据框的第一行和 3 列 当第一列的值通过其下拉级别列表修改并按搜索时 其他两列
  • Spring Boot / Spring LDAP 获取用户的memberof列表

    我想通过从如下结构的 LDAP 存储库查询用户 ID 来获取用户属性列表 dn uid E000001 ou People o Company o Internal cn BOB DOLE statusid active memberof
  • 如何在 SAPUI5 的控制器中使用内部化 i18n?

    谁能解释一下如何使用i18n中的文本setValueStateText控制器中的方法 oTP setValueStateText i18n gt co Maximal 60 h 对话框中的错误消息仅显示 i18n gt co Maximal
  • LibreOffice 命令行转换 - 没有输出文件?

    我正在使用安装在我的 Linux 机器上的 LibreOffice 我似乎遇到了一个奇怪的问题 转换似乎正在进行 并且似乎没有错误 但指定的输出目录中没有输出文件 这是我正在使用的命令的示例 opt libreoffice3 6 progr
  • 总结自连接索引,同时避免 R data.table 中的笛卡尔积

    有 2 列data table 我想通过对第 2 列中的共享元素数量求和来总结第 1 列中的成对关系 换句话说 X 值的每个成对组合有多少个共享 Y 元素 例如 我可以通过两步过程来完成此操作 首先进行笛卡尔交叉连接 然后总结如下 d da
  • 如何检查字符串是否是 mypy 的字符串文字?

    有了这个代码 import os from typing import Literal get args Markets Literal BE DE DK EE ES FI FR GB IT LT LV NL NO PL PT SE MAR
  • 捕获 javascript 弹出窗口

    在WebBrowser中 是否有办法捕获由javascript生成的愚蠢弹出窗口 那些说 成功 或 水 并且有 确定 按钮的 我尝试了 WebBrowser NewWindow 事件 但没有被触发 有小费吗 您可以简单地重新定义全局 jav
  • InstallShield 条件功能安装

    如何使 InstallShield 项目中的某个功能仅在注册表值包含特定值时才安装 该值可能仅为 是 或 否 我尝试像这样配置系统搜索 根 HKLM 密钥 Software MyKey the key to check 值 我将其留空 将值
  • 在每次创建上下文时发出 DbContext.OnModelCreating

    我首先使用实体 框架代码来处理我的数据库 我有几个名称不同但结构相同的表 并且这些表动态出现在数据库中 如何在运行时将 EntityFramework 映射到其中一个表并使用来自 DbContext 实体的数据 我为使其发挥作用所做的工作
  • 将工作表保存为 PDF 并在需要时创建目录,适用于 Windows 和 MacOS

    我在这里进行了一些修复 因为这段代码非常适合 Windows 我自己的操作系统 该代码的目的是每次都以文件名保存特定的工作表 如果该目录不存在 它也会创建一个目录来存储文件名 然而 当在 MacOS 上尝试时 它只会产生错误 不会创建或保存
  • 如何从 Alamofire 返回值

    我通过使用 swift 创建的 API 进行 url 调用 如下所示 class API let apiEndPoint endpoint let apiUrl String let consumerKey String let consu
  • Logstash 是否支持 Elasticsearch 的 _update_by_query?

    Elasticsearch输出插件是否支持elasticsearch的 update by query https www elastic co guide en logstash 6 5 plugins outputs elasticse
  • javascript 将点符号字符串转换为对象

    我有一个像这样的字符串 namespace fun1 fun2 fun3 从客户端传递过来的 它告诉服务器要使用哪个函数 如何安全地运行该功能 现在我正在做 var runthis string split namespace runthi
  • 枚举可以被认为是不安全的吗? [复制]

    这个问题在这里已经有答案了 因为我知道一个的每个元素enum有自己的整数值 我尝试过 enum Foo Red 0 Blue 1 int main void enum Foo bar 2 return 0 它 有效 我进一步查看 我认为它具