相关疑难解决方法(0)

"static const"vs"#define"vs"enum"

在C中的以下陈述中哪一个更好用?

static const int var = 5;
Run Code Online (Sandbox Code Playgroud)

要么

#define var 5
Run Code Online (Sandbox Code Playgroud)

要么

enum { var = 5 };
Run Code Online (Sandbox Code Playgroud)

c constants

550
推荐指数
12
解决办法
33万
查看次数

C中枚举的大小是多少?

我正在创建一组枚举值,但我需要每个枚举值为64位宽.如果我没记错的话,枚举通常与int的大小相同; 但是我认为我读过某个地方(至少在GCC中),编译器可以使枚举成为保持其值所需的任何宽度.那么,有可能有一个64位宽的枚举?

c enums

138
推荐指数
3
解决办法
17万
查看次数

用于枚举的宏的实用程序

socket.h我的Linux系统上的一个标题如下所示.

/* Bits in the FLAGS argument to `send', `recv', et al.  */
enum
  {
    MSG_OOB             = 0x01, /* Process out-of-band data.  */
#define MSG_OOB         MSG_OOB
    MSG_PEEK            = 0x02, /* Peek at incoming messages.  */
#define MSG_PEEK        MSG_PEEK
    MSG_DONTROUTE       = 0x04, /* Don't use local routing.  */
#define MSG_DONTROUTE   MSG_DONTROUTE
...
Run Code Online (Sandbox Code Playgroud)

定义一种用于在C创建type-safe-ish常量enum习惯用法,该语言实际上将其视为编译时常量.

我的问题是:宏定义什么目的MSG_OOB,MSG_PEEK...展开自己服务?

c c-preprocessor

12
推荐指数
2
解决办法
380
查看次数

使用枚举定义单个值的优点?(C)

最近,在这个问题中,我看到一个用于定义单个值的枚举.例如:

enum { BITS_PER_WORD = 32 };
Run Code Online (Sandbox Code Playgroud)

代替:

#define BITS_PER_WORD 32
Run Code Online (Sandbox Code Playgroud)

假设以后不会添加更多成员,那么这样做的好处是什么?(或者这是个人品味的问题)

换句话说,如果我有使用one-off int定义的现有代码,是否有任何理由改变上面显示的一次性枚举?

出于好奇,我将GCC的优化汇编程序输出与一些非平凡的代码进行了比较,结果在枚举/定义之间保持不变.

c c-preprocessor

6
推荐指数
2
解决办法
694
查看次数

C 中的模式设置:枚举、常量、定义

我读过有关该主题的几个问题:

我知道在宏上通常首选#define枚举,以获得更好的封装和/或可读性。另外,它允许编译器检查类型以防止出现某些错误。

const声明介于两者之间,允许类型检查和封装,但更混乱。

现在我在内存空间非常有限的嵌入式应用程序中工作(我们经常必须争取字节节省)。我的第一个想法是常量比枚举占用更多的内存。但我意识到我不确定常数将如何出现在最终固件中。


例子:

enum { standby, starting, active, stoping } state;
Run Code Online (Sandbox Code Playgroud)

问题

在资源有限的环境中,enumVS#define与 VSstatic const在执行速度和内存占用方面如何比较?

c embedded enums

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

标签 统计

c ×5

c-preprocessor ×2

enums ×2

constants ×1

embedded ×1