小编Atu*_*ul 的帖子

为什么这个C或C++宏没有被预处理器扩展?

当用gcc 4.1.0编译时,有人能指出代码中的问题.

#define X 10
int main()
{
  double a = 1e-X;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:指数没有数字.

当我用10替换X时,它工作正常.我还用g ++ -E命令检查了应用了预处理器的文件,它没有用10替换X.我的印象是预处理器用替换文本替换文件中定义的每个宏并应用任何智能.我错了吗?

我知道这是一个非常愚蠢的问题,但我很困惑,我宁愿愚蠢而不是困惑:).

有什么意见/建议吗?

c c++ macros c-preprocessor

31
推荐指数
4
解决办法
7761
查看次数

在OSX上使用Qt 5.1构建项目时发出警告

尝试在Mac上构建Qt项目时,我收到两个警告(使用QtCreator).

警告:没有.qmake.cache.这使得makepec显着减慢了qmake的速度.警告:在顶级项目文件中调用'cache()'以解决此问题.

警告指示调用cache()顶级项目,但我没有找到任何关于我应该如何做的文档.

我看到qt上记录了一些错误

  1. https://bugreports.qt.io/browse/QTBUG-31340
  2. https://bugreports.qt.io/browse/QTBUG-30586

我知道这只是一个警告,但我有兴趣修复它.有没有解决方法来解决它?

qt warnings qt-creator qt5

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

复制构造函数问题

我试图使用复制构造函数使用语句:

X y = X();
Run Code Online (Sandbox Code Playgroud)

但是没有调用复制构造函数.我正在使用g ++ 4.1.0.我在类中设置了X(const X&)和X(x&)构造函数.

这应该工作还是我在代码中做了一些非常基本的问题?

我的课程代码是

class A
{
 public:
  int i;

  A(int ii)
  {
   i = ii;
  }

  A(const A&)
  {
   i = 5;
  }

  A(A&)
  {
   i = -1;
  }

  A()
  {
   i = 5000;
  }
};
Run Code Online (Sandbox Code Playgroud)

当我使用A a = A();或 使用它时 A a = A(100);,它不起作用,但当我使用它A a(b);A a = b;它工作正常.

我错过了什么?我看到根据维基百科,它应该工作,但它不适用于我的情况:(.

提前感谢您的所有答案和评论.

c++ constructor copy-constructor

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