小编Bea*_*ear的帖子

如果枚举不能适合整数类型会发生什么?

我遇到了关于枚举的基础类型的问题,答案引用标准C++ 7.2/5作为:

枚举的基础类型是一个整数类型,可以表示枚举中定义的所有枚举器值.它是实现定义的,其中整数类型用作枚举的基础类型,除了基础类型不应大于int,除非枚举器的值不能适合int或unsigned int.

对于所有合理的情况,这都很清楚.但是,如果我的枚举如此可笑,以至于它甚至无法长时间适应,会发生什么呢?

(我不知道为什么在实践中会发生这种情况,但也许我感觉很具破坏性并且有一个自由的下午)

这种行为是由标准定义的吗?

c++ size enums types

12
推荐指数
1
解决办法
207
查看次数

以类为键的 Python dict 有 KeyErrors

我正在编写一个程序来使用 ctypes 处理串行流量。同时,我正在与一个数据库库交互,该库使用不同但相似的类将字段应用于数据缓冲区。

我想编写一个函数,它可以采用任意 ctypes 结构,迭代其字段,并调用数据库库。为此,我制作了一张 {ctypes class : database class} 的地图,并且得到了奇怪的 KeyErrors。然而,事实证明数据库库与它无关,您可以使用 {ctypes class : string} 的 dict 看到相同的行为,如下面的最小示例所示:

from ctypes import *

db_map = {
    c_char : "DByte",
    c_byte : "DByte",
    c_ubyte : "DByte",
    c_ushort : "DUShort",
    c_uint16 : "DUShort",
}

class command_buff(BigEndianStructure):
    _pack_   = 1
    _fields_ = [("frame_header",    c_char   ),
                ("command_id",      c_uint8  ), 
                ("param_value",     c_uint8  ),
                ("crc16",           c_uint16 ),
                ("frame_footer",    c_char   )]

def display(buff, database_name):
    """Applies my structure to the Dbuffer named database_name."""
    global db_map
    for key …
Run Code Online (Sandbox Code Playgroud)

python ctypes

2
推荐指数
1
解决办法
67
查看次数

标签 统计

c++ ×1

ctypes ×1

enums ×1

python ×1

size ×1

types ×1