jjzjj

c++ - 对于 Cmake,您可以使用 `add_compiler_flags()` 命令修改发布/调试编译器标志吗?

在add_compile_options()的手册页中,我没有看到任何关于如何修改发布/调试编译器标志的提及。您可以使用add_compiler_options()修改发布/调试编译器标志吗?如果是,如何?如果不是,推荐的规范方法是修改therelease/debugcmakevariables[1]asdescribedhere吗?[1]即设置cmake变量CMAKE__FLAGS_(对于langc/c++它将是:CMAKE_CXX_FLAGS_RELEASE、CMAKE_CXX_FLAGS_DEBUG、CMAKE_C_FLAGS_RELEASE、CMAKE_C_FLAGS_DEBU

c++ - 在 C++ 程序上使用 mpicc 链接失败

我正在运行Ubuntu11.0464位。我已经安装了OpenMPI。我正在尝试构建以下代码,它是Gropp/Lusk/Skjellum的“UsingMPI”一书中测试问题的片段:#include#include"mpi.h"intmain(intargc,char*argv[]){intsize,rank;MPI::Init(argc,argv);size=MPI::COMM_WORLD.Get_size();rank=MPI::COMM_WORLD.Get_rank();MPI::Finalize();return0;}从终端,我可以使用mpicc包装器检索我在我的机器上编译和链接所

c++ - 如何在 QMainWindow 中设置多个标志?

来自这里:http://doc.qt.io/qt-4.8/qt-widgets-windowflags-example.htmlif(flags&Qt::MSWindowsFixedSizeDialogHint)text+="\n|Qt::MSWindowsFixedSizeDialogHint";if(flags&Qt::X11BypassWindowManagerHint)text+="\n|Qt::X11BypassWindowManagerHint";if(flags&Qt::FramelessWindowHint)text+="\n|Qt::FramelessWindowHi

c++ - 允许对单个值进行隐式转换

我有一个Flags类,它的行为类似于std::bitset,它正在替换旧代码库中的位打包整数。为了强制遵守较新的类,我想禁止从int类型进行隐式转换。enumclassFlag:unsignedint{none=0,A=1,B=2,C=4,//...};classFlags{public:Flags();Flags(constFlag&f);explicitFlags(unsignedint);//don'tallowimplicitFlags(constFlags&);private:unsignedintvalue;};我想只允许来自Flag和Flags类型的隐式构造和赋值。但是,

c++ - C/C++ : -msse and -msse2 Flags do not have any effect on the binaries?

我只是在玩弄gcc(g++)和编译器标志-msse和-msse2。我有一个看起来像这样的小测试程序:#includeintmain(intargc,char**argv){floata=12558.5688;floatb=6.5585;floatresult=0.0;result=a*b;std::cout当我用下面的语句编译它时:/usr/local/bin/g++-4.9-W-mssemain.cpp-otestsse和/usr/local/bin/g++-4.9-W-msse2main.cpp-otestsse2输出文件是二进制相等的。但由于SMID标志,我预计它们并不相同。所以

c++ - OSX 10.8 上 -stdlib=libc++ 的无效部署目标

我正在通过node-gyp编译一个用C++编写的Node.JS包。当我编译它时,我收到以下错误:clang:error:invaliddeploymenttargetfor-stdlib=libc++(requiresOSX10.7orlater)。我在OSX10.8上运行,并且安装了XCode命令行工具。这是node-gyp用来编译包的文件:{"targets":[{"target_name":"package_name",'type':'executable','xcode_settings':{'OTHER_CFLAGS':["-std=c++11","-stdlib=libc+

C++ 设计 : functions with boolean options

我有一个关于C++中“良好设计实践”的问题。我正在用C++11编写一个数字库,我使用了很多元编程和基于模板的技术。但我有一个非常基本的问题:考虑一个函数,它可以有两个非常接近的行为,除了一个可以由boolean标志激活的选项。我只考虑一个可以由开发人员设置/取消设置的标志,而不是一个可以在运行时设置/取消设置的标志。设计有3种可能性:1)编写两个在名称中带有显式选项的函数:myFunctionFlag1(...);myFunctionFlag2(...);2)使用模板参数:templatemyFunction(...);3)使用可变参数:myFunction(...,constbool

Python 扩展 : using different compiler flags for a C parts and C++ parts

对于我的python扩展,我有C(来自嵌入式库)和C++文件,它们被编译并链接在一起。只有C++部分与Python接口(interface)(通过SWIG)。这在VS2015的windows和linux下的gcc中都有效。但是,对于gcc,C++文件需要一组不同于C文件的编译器标志(例如-std=c++11、-Wno-reorder),以避免出现有关C中不正确标志的警告。在setuptools/distutils中有没有办法单独更改每个文件的编译器标志,例如。基于文件扩展名?我已经使用了来自https://stackoverflow.com/a/36293331/3032680的自定义

c++ - g++ : Is there a way to access compile flags inside the code that is being compiled?

有没有一种方法(例如,定义的常量)来访问正在编译的代码中运行编译器的编译标志。例如,我想要一个程序来写入编译时使用的标志。intmain(){std::coutgcc/g++是否存在这样的常量?或者更好:是否有在gcc和clang中都定义的常量?我对检查优化级别和-march标志的值特别感兴趣。那么,如果没有显示所有标志的常量,是否至少有显示这些值的常量? 最佳答案 以下命令打印出所有预定义的宏:g++-dM-E-这适用于gcc和g++。您可以自行检查-不幸的是,没有宏可让您轻松访问完整的gcc/g++命令行。幸运的是,大多数-m.

c++ - 为什么一些 GCC 警告标志不属于 C++ 语言但在 C++ 中工作?

我正在探索GCC使用gcc-Q--help=warning语法提供的警告。(有关详细信息,请参阅3.2OptionsControllingtheKindofOutput。)我想到的是许多(GCC版本6.4.1中的250个中有109个)警告未归类为C++。我的意思是,在执行受限查询gcc-Q--help=warning,c++时,它们不会出现。(出于好奇,81个警告既不是C++也不是C。)然而,至少其中一些警告在C++中有效。以-Waggregate-return为例。(在CompilerExplorer上查看。)-Waggregate-return默认情况下是禁用的,我知道它可能没什么