相关疑难解决方法(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万
查看次数

const与#define对全局常量的主要优点是什么?

例如,在嵌入式编程中,由于以下原因,#define GLOBAL_CONSTANT 42首选const int GLOBAL_CONSTANT = 42;:

  • 它不需要放在RAM中(在微控制器中通常非常有限,μC应用通常需要大量的全局常量)
  • const 不仅需要闪存中的存储位置,而且编译器会在程序开头生成额外的代码来复制它.

反对使用的所有这些优点,使用#define的主要优点是const什么?在非μC环境中,内存通常不是一个大问题,并且const因为它可以在本地使用而有用,但是全局常量呢?或者答案只是"我们永远不应该使用全局常量"?

编辑:

这些例子可能引起了一些误解,所以我必须声明它们在C中.如果C编译器为这两者生成了完全相同的代码,我认为这将是一个错误,而不是一个优化.

我只是将问题扩展到C++而不考虑它,希望获得新的见解,但我很清楚,在面向对象的环境中,全局常量的空间很小,无论它们是宏还是consts.

c c++

3
推荐指数
1
解决办法
3544
查看次数

标签 统计

c ×2

c++ ×1

constants ×1