草庐IT

c++ - 如何摆脱 GCC 中已弃用函数中的已弃用警告?

实现弃用警告的一种方法是在调用弃用函数时生成警告,除非您从弃用的上下文中调用。这样,遗留代码可以调用遗留代码,而不会产生只会产生噪音的警告。这是一个合理的思路,它反射(reflect)在我在OSX上的GCC4.2(1)和Clang4.0(2)以及Ubuntu上的Clang3.0(3)中看到的实现。(1):i686-apple-darwin11-llvm-g++-4.2(GCC)4.2.1(基于AppleInc.build5658)(LLVMbuild2336.11.00)(2):Appleclang4.0版(tags/Apple/clang-421.0.57)(基于LLVM3.1svn

c++ - 为什么 gcc 不能去虚拟化这个函数调用?

#include#includestructInterface{virtualvoidf()=0;};structImpl1:Interface{voidf()override{std::puts("foo");}};//or__attribute__((visibility("hidden")))/anonymousnamespacestaticInterface*constptr=newImpl1;intmain(){ptr->f();}用g++-7编译时-O3-flto-fdevirtualize-at-ltrans-fipa-pta-fuse-linker-plugin,上面的

c++ - GCC 会支持 C++ AMP

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。visitthehelpcenter帮助澄清这个问题以便重新打开它。关闭10年前.有谁知道是否有计划在g++(GCC)中为新的C++AMP标准开发支持,该标准是微软最近作为released的openspecification?我看到有人是alreadyaskingaboutIntelsupportintheirforums。但我还没有看到GCC的任何内容。 最佳答案 article在Ars说:>AMPhasbeende

c++ - 构建 gcc/libstdc++ 时使用了哪些配置选项?

在阅读了problem之后在DLL和EXE之间传递空std::string对象时,我担心用于构建我的gcc/libstdc++的配置选项。更具体地说,我想知道在./configure.期间是否使用了--enable-fully-dynamic-string我在WindowsXP上使用MinGW4.4.0。有人知道用于构建此版本的配置吗?对于任何安装的GNUgcc,是否有一种通用的方法可以找到这些信息?gcc手册没有给我任何关于这个主题的提示。感谢您的意见! 最佳答案 gcc-v打印出配置选项以及其他内容:$gcc-vUsingbui

c++ - GCC 7,-Wimplicit-fallthrough 警告,以及清除它们的便携方式?

我们正在捕获来自GCC7的警告,即在switch语句中隐式失败。以前,我们在Clang下清除了它们(这就是下面评论的原因):g++-DNDEBUG-g2-O3-std=c++17-Wall-Wextra-fPIC-cauthenc.cppasn.cpp:Inmemberfunction‘voidEncodedObjectFilter::Put(constbyte*,size_t)’:asn.cpp:359:18:warning:thisstatementmayfallthrough[-Wimplicit-fallthrough=]m_state=BODY;//fallthrough^a

c++ - 为什么这段代码用 gcc 编译而不用 clang

此代码与gcc/g++和msvc完美结合,但不适用于clang。一直报找不到Log的匹配函数,这是怎么回事?#includetemplateautoCall(Functionfunc,Args&&...args)->typenamestd::result_of::type{returnfunc(std::forward(args)...);}templateT(*Log(T(*FuncPtr)(Args...)))(Args...){returnFuncPtr;}intmain(){autor=Log(Call)([](intx){returnx*10;},10);std::cerr错

c++ - 为什么对于这个涉及求幂的简单函数,clang 生成的代码比 gcc 快得多?

以下使用clang编译的代码比使用相同编译器标志(-O2或-O3):#include#include#include#includelongdoublefunc(intnum){longdoublei=0;longdoublek=0.7;for(intt=1;tstart,end;start=std::chrono::system_clock::now();autoi=func(num);end=std::chrono::system_clock::now();std::chrono::durationelapsed=end-start;std::cout.precision(std:

c++ - 使用 GCC 一起编译 C 和 C++ 文件

我正在尝试使用GCC一起编译C和C++源代码。gcc-std=c++0xtest.cpp-std=c99test.c-lstdc++现在,这工作正常,除了我收到两个警告。cc1plus:warning:commandlineoption"-std=c99"isvalidforC/ObjCbutnotforC++cc1:warning:commandlineoption"-std=c++0x"isvalidforC++/ObjC++butnotforC因此,我不能在此设置中使用-Werror。能否以某种方式抑制这些警告? 最佳答案 分

c++ - GCC C++ "Hello World"程序 -> .exe 在 Windows 上编译时为 500kb 大。我怎样才能减小它的大小?

我最近才开始学习C++-我正在使用nuwen'sWindows上的MingW版本,使用NetBeans作为IDE(我也有MSVC2008的MSDNAA版本,虽然我不经常使用它)。编译这个简单的程序时:#includeusingnamespacestd;intdog,cat,bird,fish;voidf(intpet){cout我的可执行文件大约有1MB大。当我将项目配置从Debug更改为Release,使用-O1-Os标志(沿途剥离调试符号)时,二进制大小从1MB减少到544KB。我不是“大小怪胎”,但我只是想知道-有没有什么办法可以进一步减小.exe的大小?我只是认为,对于这样一个

c++ - thread_local 静态成员模板定义 : initialisation fails with gcc

当C++类中的静态成员同时是thread_local和成员模板时,它不会被初始化。#include#includeclassA{public:templatethread_localstaticstd::unordered_mapm;};templatethread_localstd::unordered_mapA::m{};intmain(){//A::m=std::unordered_map{};//solvestheproblemstd::cout.bucket_count().insert({1,2});//causesSIGPFE(hashmodulobucket_count