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

#define和const有什么区别?

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

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

c++ const c-preprocessor

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

#define 在 C++ 中的实用性

我刚刚通过读取文件中的值从 C++ 矩阵加法教程中找到了这段代码 -

我想问一下#define在这里做什么?它有什么特别之处呢?这与在 main 中单独声明 M 和 N 为 int 或 char 有什么不同?

代码

#include <iostream>
#include <fstream>
using namespace std;

#define M 4
#define N 5

void matrixSum (int P[M][N], int Q[M][N], int R[M][N]);
void matrixSum (int P[M][N], int Q[M][N], int R[M][N]) {
 for (int i=0; i<M; i++)    // compute C[][]
  for (int j=0; j<N; j++) 
    R[i][j] = P[i][j] + Q[i][j];
}

int main () {

 ifstream f;
 int A[M][N];
 int B[M][N];
 int C[M][N];

    f.open("values");   // open …
Run Code Online (Sandbox Code Playgroud)

c++

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

哪种更好的做法:全局常量还是#define?

可能重复:
C++ - enum vs. const vs. #define

在我使用之前,我曾经#define在我的main函数中创建常量并将它们传递到需要的地方.我发现我经常通过它们,这有点奇怪,尤其是数组大小.

最近我一直在使用#define,因为我不必将main中的常量传递给每个单独的函数.

但是现在我想起来了,我也可以使用全局常量,但出于某种原因,我对他们有点犹豫不决.

哪种更好的做法:全局常量还是#define

一个附带问题,也是相关的:正如我描述的一个不好的做法,是否传递了我的主要常量?

c++ constants c-preprocessor

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

C++/Qt编码风格 - #define定义在哪里

我正试图建立一个突破性的游戏克隆Qt.我需要弄清楚QGraphicsItem我的球碰撞的类型.例如,如果我将球与墙碰撞,球就会反弹,如果它与砖碰撞,它必须反弹并摧毁砖.为了找出QGraphicsItem它是什么类型,我认为最好的方法可能是覆盖QGraphicsItem::type()(请告诉我,如果这不是正确的方法!).

在下面的代码中,brick.h我将"Brick"设置为Type 3.现在,值3看起来非常麻烦.我更愿意用'#define'声明一些东西

#include <QGraphicsItem>

//should this #define be here?
//#define BRICK_SPRITE 3

class Brick : public QGraphicsItem
{
public:
    Brick(const QPixmap& p, QGraphicsScene *scene = 0);
    virtual QRectF boundingRect() const;
    virtual void paint( QPainter *painter,
                        const QStyleOptionGraphicsItem *option,
                        QWidget *widget );

    QPainterPath shape() const;

    enum { Type = 3 }; //enum {Type = BRICK_SPRITE}

    int type() const { return Type; }

private:
    QPixmap pixmap;
};
Run Code Online (Sandbox Code Playgroud)

放置声明'#define BRICK_SPRITE 3'的好位置在哪里?我在项目中有几个其他文件.我应该将所有定义放在单独的头文件中吗?

c++ qt constants qgraphicsitem

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

#define和CUDA

为什么以下代码段不适用于CUDA(3.2和4.0)?

#define NUM_BLOCKS 16

// lots of code.

dim3 dimBlock(NUM_BLOCKS, NUM_BLOCKS);
Run Code Online (Sandbox Code Playgroud)

但是这个,

dim3 dimBlock(16, 16);
Run Code Online (Sandbox Code Playgroud)

呢?

我一直在error : expected a ")"error : expected an expression.我错过了什么?

c++ cuda c-preprocessor

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

PARITY_NONE是C++ Windows中的关键字?

我正在使用boost编写一个串行库,我有一个枚举:

enum parity_t { PARITY_NONE, PARITY_ODD, PARITY_EVEN };
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

错误1错误C2059:语法错误:'('

我无法弄清楚问题是什么.然后我的朋友和我试过:

void PARITY_NONE();
Run Code Online (Sandbox Code Playgroud)

我们得到了这些错误:

错误1错误C2143:语法错误:在'常数'之前缺少')'

错误2错误C2143:语法错误:缺少';' 在'恒定'之前

错误3错误C2182:'WORD':非法使用'void'类型

错误4错误C2059:语法错误:')'

我包括boost asio,我认为它包括Windows serial api.这仅发生在Windows中.作为一种解决方法,我改变了我的枚举名称.但是,我无法在互联网上找到与此问题相关的任何内容.有人可以帮我们解决这个问题吗?

c++ windows visual-studio-2010 boost-asio parity

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

#define与const声明的优先级

可以#define"覆盖"一个const变量,反之亦然?或者它会导致编译器错误?

//ONE
#define FOO 23
const int FOO = 42;

//TWO
const int FOO = 42;
#define FOO 23
Run Code Online (Sandbox Code Playgroud)

FOO在两种情况下都有什么价值,42或23?

c++ variables const overwrite c-preprocessor

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