小编Luk*_*kas的帖子

MinGW和std :: thread

所以我一直在尝试使用MinGW编译器在Windows上编译和运行以下代码.

#include <iostream>
#include <thread>

void test()
{
    std::cout << "test" << std::endl;
}

int main()
{
    std::thread t(test);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令进行编译:

g++ -std=c++11 test.cpp -o test.exe
Run Code Online (Sandbox Code Playgroud)

现在问题是应该使用的MinGW版本,我已经尝试过我所知道的所有版本.

  1. MinGW-builds:thread-win32
  2. MinGW-builds:thread-posix
  3. MinGW-w64:stdthread实验rubenvb
  4. MinGW-w64:stdthread实验rubenvb 4.7

数字1不起作用,因为GCC 显然只在内部支持 pthread.

数字2确实编译,它基本上甚至输出test(参见输出的最后一行),但它也崩溃了错误:

terminate called without an active exception

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
test
Run Code Online (Sandbox Code Playgroud)

数字3和4再次进行编译,但它们不输出test而是立即崩溃,但具有更具描述性的输出:

terminate called after throwing …
Run Code Online (Sandbox Code Playgroud)

c++ windows mingw c++11 stdthread

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

构造函数中参数和成员变量的用法

在编写类的构造函数时,我经常会问自己是否应该使用初始化成员变量或构造函数参数.这里有两个例子来说明我的意思:

构造函数参数

class Foo {
public:
    Foo(int speed) :
        mSpeed(speed),
        mEntity(speed)
    { }

private:
    int mSpeed;
    Entity mEntity;
}
Run Code Online (Sandbox Code Playgroud)

成员变量

class Foo {
public:
    Foo(int speed) :
        mSpeed(speed),
        mEntity(mSpeed)
    { }

private:
    int mSpeed;
    Entity mEntity;
}
Run Code Online (Sandbox Code Playgroud)

更进一步,在构造函数体中使用变量会产生同样的问题.

构造函数参数

class Foo {
public:
    Foo(int speed) :
        mSpeed(speed)
    {
        mMonster.setSpeed(speed);
    }

private:
    int mSpeed;
    Monster mMonster;
}
Run Code Online (Sandbox Code Playgroud)

成员变量

class Foo {
public:
    Foo(int speed) :
        mSpeed(speed)
    {
        mMonster.setSpeed(mSpeed);
    }

private:
    int mSpeed;
    Monster mMonster;
}
Run Code Online (Sandbox Code Playgroud)

我知道它并不重要(除了一些特殊情况),这就是为什么我宁愿在代码设计上征求意见,而不是让它起作用,什么不起作用.

如果您需要一个特定的问题可以使用:什么方式可以产生一个漂亮而一致的代码设计,并且一个人具有(dis)优势而不是另一个?

编辑:不要忘记问题的第二部分.构造函数体中的变量怎么样?

c++ code-design

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

Qt Creator使用MinGW编译器和CMake

我正在尝试将Qt Creator用于不使用Qt库的C++ CMake项目.

我正在遵循官方指南,但它根本不起作用.这是我的步骤:

  1. 将我的MinGW bin目录添加到PATH.
  2. 运行QtCreator并设置CMake.
  3. 打开一个非常基本的CMakeLists.txt文件.
  4. 选择"Ninja(桌面)"作为CMake生成器.
  5. 从CMake获取错误.

你可能已经注意到官方指南中根本没有提到第4步.我已经习惯了CMake,因此我问自己:

为什么Qt Creator不能提供正常的"MinGW Makefiles"生成器?

忍者或仅限NMake

最后是最终的问题:

如何让Qt Creator通过CMake使用MinGW编译器?


回答的问题:

根据官方指南,正常情况下,如果设置PATH正确,步骤5不应该发生.

为什么CMake没有找到编译器集PATH

这是Ninja Generator产生这些错误,如果你用CMake手动完成同样的事情.

我的PATH设置

CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file: …
Run Code Online (Sandbox Code Playgroud)

windows mingw cmake qt-creator

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

标签 统计

c++ ×2

mingw ×2

windows ×2

c++11 ×1

cmake ×1

code-design ×1

qt-creator ×1

stdthread ×1