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

static const vs #define

使用static constvars比#define预处理器更好吗?或者也许取决于背景?

每种方法的优点/缺点是什么?

c c++ const

200
推荐指数
6
解决办法
14万
查看次数

#define和const有什么区别?

可能重复:
为什么有人会使用#define来定义常量?
c ++ C++中的宏和const之间的区别
- 枚举与const对#define

使用#defineconst创建常量有什么区别?有没有比其他的性能优势?当然我更喜欢使用它,const但我会考虑#define它是否具有合适的优势.

c++ const c-preprocessor

40
推荐指数
2
解决办法
8万
查看次数

在C++中,使用#define或const来避免幻数更好吗?

使用#define而不是const有什么优缺点(反之亦然)?

当我读到错误的编程实践特别是魔术数字时,我发现自己更频繁地使用#define.一些问题突然出现在我脑海中,例如:

使用#define很难吗?
它需要内存空间吗?
使用const会更快吗?

我读了一下这个,但我仍然不确定,从我所理解的:
#define定义一个宏(不确定宏意味着什么),它处理预处理.在处理代码之前,它会将已定义关键字的所有实例替换为其他实例.另一方面,const是变量,其值在运行时期间不能在中途改变.

我能想到使用const的唯一原因是该值是否依赖于其他变量.例如:

#define PI 3.14159f
#define RADIUS 3.0f
#define AREAOFCIRCLE PI*RADIUS*RADIUS
Run Code Online (Sandbox Code Playgroud)

由于AREAOFCIRCLE的每个实例都将被PI*RADIUS*RADIUS取代,因此每次使用AREAOFCIRCLE时程序都会为它计算,因此效率很低.另一方面:

const float areaofcircle = PI*RADIUS*RADIUS;
Run Code Online (Sandbox Code Playgroud)

会更有效,因为程序只计算一次.

回到最初的问题,#define与const相比如何?

c++ const c-preprocessor

4
推荐指数
1
解决办法
5566
查看次数

#define一个字符串文字,然后将其分配给一个char*

#define MAXSTR "Maximum number reached"

char *str = MAXSTR;
Run Code Online (Sandbox Code Playgroud)

在做这种操作的同时.代码工作正常,但我得到lint错误.我怎么解决它?

Error:
Assignment of string literal to variable 
Run Code Online (Sandbox Code Playgroud)

如果我使用:

 #define MAXSTR "Maximum number reached"

 char *str = (char *) MAXSTR;
Run Code Online (Sandbox Code Playgroud)

然后lint错误:

Attempt to cast away const (or volatile)
Run Code Online (Sandbox Code Playgroud)

c macros pointers lint const

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

标签 统计

const ×4

c ×3

c++ ×3

c-preprocessor ×2

constants ×1

lint ×1

macros ×1

pointers ×1