草庐IT

在 Windows 10 上使用 nuwen MinGW 的 C++17 文件系统

我想试用C++17中的新文件系统库,因此尝试复制std::filesystem::current_pathexamplefromcppreference.com并在我的Windows10x64机器上使用最新版本(16.0)的MinGWdistributionfromnuwen.net进行编译。这包括gccv8.1,它应该支持根据cppreference.comcompilersupportpage的文件系统库。这是我要编译的代码:#include#includenamespacefs=std::filesystem;intmain(){std::cout我正在使用的编译器命令:g++-

c++ - 在 Mingw 上编译的 C/C++ 代码会保证与 GCC 完全兼容(在 linux 和 Mac 上)

我想生成交叉编译器兼容的C++代码。我编写了一些有点“异国情调”的代码,将C++语言推向灰色、怪异、神秘的领域。考虑到我的代码只依赖于boost和STL,问题是检查代码兼容性,而不是库兼容性:我的代码同时编译msvc和Mingw是否能确保我的代码100%与每个平台上的GCC兼容? 最佳答案 完全没有。使用MSVC和MinGW编译您的代码可确保您的代码与Microsoft的C/C++库兼容。我知道你只是在谈论代码兼容性,但这样的事情不存在。如果您将C++插入灰色区域,则很可能相同的代码会根据编译平台的不同而产生不同的结果。保证完全兼容

c++ - 乱码编译器 (MinGW) 输出

我一直在尝试编译我在其他地方使用的一些基本链表示例。我遇到的问题更多是用户问题。我想图片说明了一切:所有奇怪符号的原因是什么?正常的MinGW输出应该类似于错误:从‘void*’到‘element*’的无效转换这就是我遇到的问题,但我很乐意收到有关错误本身的解释。这是我的代码:#include#includestructelement{intinfo;structelement*next;};intmain(void){structelement*head,*node;intarv;head=NULL;printf("Enternumber!(0toexit)");scanf("%d"

C++ 加速键不起作用

我无法让加速器工作。我正在使用C++。在我的窗口设置并显示之后。MENUITEMINFOWmAbout;mAbout.cbSize=sizeof(MENUITEMINFO);mAbout.fMask=MIIM_TYPE|MIIM_ID;mAbout.wID=(UINT)ID_ABOUT;mAbout.fType=MFT_STRING;mAbout.dwTypeData=(LPWSTR)L"&About";InsertMenuItemW(HelpMenu,0,TRUE,&mAbout);我的菜单工作正常,调用我的“关于”框,没问题。现在,在消息循环之前,我加载加速器://Loadacce

C++ 32 位与 64 位 float 限制

鉴于代码段如下,我只想知道为什么longdouble的最大值在64位比32位小?为什么64位版本不能像32位版本那样扩展数字来填充“40”精度输出?LDBL_MIN和LDBL_MAX的值似乎相等,这是一个错误吗?我查看了我机器中的float.h文件,但找不到这些宏常量的明确定义。测试代码(平台=Win7-64bit)#include#includecout32位结果(MinGW-20120426)FLT_MAX=340282346638528859811704183484516925440DBL_MAX=1.797693134862315708145274237317043567981

c++ - 使用 mingw 在 windows 上编译 libnoise

这是我在这里的第一篇文章,如果我做错了什么请原谅我。我已经为此苦苦挣扎了几天,我终于决定让步并寻求帮助。简而言之,我想使用mingw在Windows上编译libnoise(1.0.0)。但是,似乎缺乏在线可用的信息。我已经从网站上下载了源文件并按照INSTALL文本文件中的说明进行操作,该文件表明我应该运行命令“CXXFLAGS='-O3-fomit-frame-pointer'make”(我从mingW外壳)。此操作的输出可以在link找到(由于其长度,我已经链接而不是发布输出)。如果我省略CXXFLAGS或fomit-frame-pointer标志,或者如果我使用mingw32-m

c++ - 无法使用 MinGW C++ 在 NetBeans IDE 7.3 中编译 "Hello World"

我正在尝试制作一个简单的“HelloWorld!”在NetBeansIDE7.3中使用MinGW作为我的C++编译器的程序。我遇到了构建失败,我不知道为什么。这是我的编译器设置:家庭:MinGW基本目录:C:\MinGWC编译器:C:\MinGW\bin\gcc.exeC++编译器:C:\MinGW\bin\g++.exe汇编程序:C:\MinGW\bin\as.exe制作命令:C:\MinGW\msys\1.0\bin\make.exe调试器命令:C:\MinGW\bin\gdb.exe我已确保我的环境PATH指向C:\MinGW\bin和C:\MinGW\msys\1.0\bin。

c++ - BOOST_STATIC_ASSERT_MSG - 缺少错误信息

我在让BOOST_STATIC_ASSERT_MSG发出有意义的错误消息时遇到问题。我把它归结为:#includenamespaceStaticChecks{BOOST_STATIC_ASSERT_MSG(false,"Whereismyerrormessage?");}指定的错误信息无处可见。相反,我得到以下信息:c:\tryit>x86_64-w64-mingw32-g++-O0-g-m64-Wall-IC:\boost_1_50_0-IC:\MinGW-W64\msys\includecompiletimechecks.cpp-c-ocompiletimechecks.cpp.o

c++ - 为什么在C++中多了一个&来传递非静态成员函数的地址给线程?

据我了解,函数名称本身就是指向它的指针。因此,当我有一个函数时,我可以通过简单地将它的地址传递给线程构造函数来创建一个线程,如下所示:voidthread_function{}std::threadthreadObj1(thread_function);我的困惑是在将非静态成员函数的地址传递给线程时。例如:classClassA{public:voidnonstatic_function(){}};ClassAinstance;std::threadthreadObj2(ClassA::nonstatic_function,&instance);传递这样一个函数的地址有两种方式:Cla

c++ - 将 boost 与 MinGW 一起使用时对 WinMain@16 的 undefined reference

我在Windows7下使用Eclipse使用C++进行编程。我的makefile如下:build:g++-shared-o"lib\libCacheOpt.a""src\*.cpp"-enable-auto-import-I"${CWD}\include"-I"${BOOST}"-L"${BOOST}\lib"-lboost_program_options-lboost_unit_test_frameworkexec:buildg++"src\main.cpp"-enable-auto-import-I"${CWD}\include"-L"${CWD}\lib"-I"${BOOST}"