相关疑难解决方法(0)

为什么有人会使用#define来定义常量?

这是一个简单的问题,但为什么有人会使用#define定义常量?

有什么区别

#define sum 1const int sum = 1;

c++ const c-preprocessor

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

找到C++中3个数字中最小的数字

有没有办法让这个功能更优雅?我是C++的新手,我不知道是否有更标准化的方法来做到这一点.这可以变成一个循环,所以变量的数量不受我的代码限制吗?

float smallest(int x, int y, int z) {

  int smallest = 99999;

  if (x < smallest)
    smallest=x;
  if (y < smallest)
    smallest=y;
  if(z < smallest)
    smallest=z;

  return smallest;
}
Run Code Online (Sandbox Code Playgroud)

c++ max min

28
推荐指数
6
解决办法
8万
查看次数

过度依赖宏

我觉得,每次我读C或C++程序时,其中一半或更多只是宏.我知道宏可以很酷但是它们很难跟踪,调试等.更不用说大多数编程语言甚至都没有定义像宏这样的东西(尽管Perl6会有类似的东西).

我个人总是找到一种方法来编写我的代码而不使用宏,无论是模板,多重继承等.我甚至觉得我不是一个优秀的程序员,因为所有的专业人员使用宏,我尽量避免使用它们如我所能.

问题是,如果没有宏,是否存在无法解决的问题?宏最终是一个好/坏的做法?我什么时候应该考虑使用宏?

c c++ macros

16
推荐指数
3
解决办法
3337
查看次数

在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的常量字符串数组 - objective c

我需要一个常量的字符串数组.使用#define是个好主意?

例如:

#define rows [NSArray arrayWithObjects:  @"NameRowA",@"NameRowB",@"NameRowC", nil]


#define KEY_ROWA [columnas objectAtIndex:0]
#define KEY_ROWB [columnas objectAtIndex:1]
#define KEY_ROWC [columnas objectAtIndex:2]
Run Code Online (Sandbox Code Playgroud)

我需要访问字符串数组和该数组的元素.

我已经读过了,(我不知道是不是真的)用这种方式创建一个新的NSArray,当它被使用时,我想这个数组已经发布了,所以我认为这很好,因为你只使用那部分内存什么时候需要它.

objective-c ios

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

为什么#define不好?

可能重复:
C++宏什么时候有用?
为什么#define不好,什么是正确的替代品?

有人告诉我#define很糟糕.好吧,老实说我不明白为什么不好.如果它不好,那么我可以用其他方式做到这一点呢?

#include <iostream>
#define stop() cin.ignore(numeric_limits<streamsize>::max(), '\n');
Run Code Online (Sandbox Code Playgroud)

c c++ iostream c-preprocessor

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

C++:如何使用id,string和named constant创建一个数组?

我经常在我的代码中使用const查找表,它由id和字符串组成.但为了便于阅读,最好使用符号名称(命名常量)而不是id.例:

class LookupTable
{
   map<int,string> m { {10,"red"}, {20,"blue"}, {30,"green"} };
   enum { col_rd = 10, col_bl = 20, col_gr = 30 };
};

LookupTable tab;
cout << tab.m[10];      // "red", using the id
cout << tab.m[col_bl]   // "blue", using a symbol

cout << tab.m[11];      // Typo! Compiler does not check this
cout << tab.m[col_xy];  // Typo! Compiler will complain
Run Code Online (Sandbox Code Playgroud)

在编译时也将检查使用符号名称的拼写错误.

但我喜欢在一个地方定义元素的符号名称,id和字符串,而不是在上部定义值,然后在类声明的下半部分定义命名常量,特别是如果表是相当长.例如,我想写一些像:

mytable.init = { { col_rd, 10, "red" },    // define the symbol names and 
                 { col_bl, …
Run Code Online (Sandbox Code Playgroud)

c++ symbols constants lookup-tables c++11

-1
推荐指数
1
解决办法
784
查看次数

标签 统计

c++ ×6

c-preprocessor ×3

c ×2

const ×2

c++11 ×1

constants ×1

ios ×1

iostream ×1

lookup-tables ×1

macros ×1

max ×1

min ×1

objective-c ×1

symbols ×1