草庐IT

c++ - 使用 GCC 4.7.0 构建 Boost 1.49.0 时出错

我正在尝试使用GCC4.7.0(MinGW)构建Boost1.49.0。我不断收到以下错误消息数十次:c:\tools\mingw\bin../lib/gcc/i686-pc-mingw32/4.7.0/../../../../include/c++/4.7.0/cmath:1096:11:error:'::hypot'hasnotbeendeclaredcmath的第1096行包含using::hypot;cmath包括math.h将hypot函数声明为externdouble__cdeclhypot(double,double);/*inlibmoldname.a*/在这两个文件中

c++ - Haskell 可以像 Clang/GCC 一样优化函数调用吗?

我想问一下Haskell和C++编译器是否可以以相同的方式优化函数调用。请看下面的代码。在以下示例中,Haskell比C++快得多。我听说Haskell可以编译到LLVM并且可以通过LLVMchannel进行优化。此外,我听说Haskell在后台进行了一些重大优化。但是以下示例应该能够以相同的性能工作。我想问:为什么我在C++中的示例基准比在Haskell中慢?是否可以进一步优化代码?(我使用的是LLVM-3.2和GHC-7.6)。C++代码:#include#includeintb(constintx){returnx+5;}intc(constintx){returnb(x)+1;

c++ - union 中未命名结构的同名成员是错误还是 GCC 错误?

下面的代码可以在VisualC++中编译成功.我喜欢它,它很甜!#include#ifdef_MSC_VER#pragmawarning(push)#pragmawarning(disable:4201)#pragmapack(push,1)#definePACKED#else#definePACKED__attribute__((__packed__))#endifunionA{struct{inta:1;intb:2;intc1:29;}PACKED;struct{inta:1;intb:2;intc2:28;intd:1;}PACKED;intval;}PACKED;#ifdef

c++ - GCC 是否支持 long long int?

GCC是否支持:longlongint哪个是64位整数?另外,longlongint是标准的一部分吗? 最佳答案 是的,GCC确实支持longlongint,这是C99标准的一部分。该标准不要求其大小以位为单位,但要求LLONG_MIN的值和LLONG_MAX在暗示它至少是64位的(精确64位宽的整数类型是int64_t/uint64_t来自)。LLONG_MIN最多只能是-9223372036854775807LLONG_MAX必须至少为9223372036854775807 关于c+

c++ - gcc和turbo C的输出差异

为什么使用gcc和turboc这两种编译器编译代码时产生的输出会有差异。#includeintmain(){char*p="Iamastring";char*q="Iamastring";if(p==q){printf("Optimized");}else{printf("Changeyourcompiler");}return0;}我在gcc上得到"Optimized",在turboc上得到"Changeyourcompiler"。为什么? 最佳答案 您的问题已被标记为C和C++。所以我会同时回答这两种语言。[C]来自ISOC99

c++ - GCC:空程序 == 23202 字节?

test.c:intmain(){return0;}我没有使用任何标志(我是gcc的新手),只是命令:gcctest.c我用的是最新的TDMbuildofGCC在win32上。生成的可执行文件几乎是23KB,对于一个空程序来说太大了。如何减小可执行文件的大小? 最佳答案 不要听从它的建议,但为了消遣,请阅读this'story'关于制作尽可能小的ELF二进制文件。 关于c++-GCC:空程序==23202字节?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么接受数组的 C++ 模板不比接受 GCC 5.3 和 Clang 4.0 的指针更专业?

为什么接下来的两个模板声明是模棱两可的(所以没有一个比另一个更专业)?我知道这个问题已经在StackOverflow上提出过很多次了,但通常人们会回答如何解决歧义,而不是为什么会发生这种情况。我。templatevoidfunc(char*buf,Tsize){}二。templatevoidfunc(char(&buf)[N],std::size_tsize){}尝试通过C++14标准的步骤来解决部分函数模板排序(14.5.6.2):Toproducethetransformedtemplate,foreachtype,non-type,ortemplatetemplateparame

c++ - 此代码有效吗?与 gcc 一起使用,不要与 clang 一起使用

这个问题在这里已经有了答案:Strangeerrorwithatemplatedoperatoroverload(3个回答)关闭8年前。以下最小代码可以在g++上编译,但不会在clang++上编译:templateToperator*(floata,constT&b){returnb*a;}structA{Aoperator*(floatb)const{Aa;returna;}};intmain(){Aa;2.0f*a;}这是我得到的错误:$clang++test.cpptest.cpp:2:3:error:overloaded'operator*'musthaveatleastone

c++ - 没有临时数组的列表初始化 - 在 GCC 中不起作用

考虑以下人为设计的示例structA{A(int){}A(constA&)=delete;~A(){}};structB{Aa[2]={{1},{2}};};intmain(){Bb;}它在clang(任何版本)中编译得很好,但在GCC(任何版本,任何标准>=C++11)中编译不好:Inconstructor'constexprB::B()'::7:8:error:useofdeletedfunction'A::A(constA&)'structB{^:3:5:note:declaredhereA(constA&)=delete;^:Infunction'intmain()'::12:

c++ - Clang 与 GCC : Friend-ing a global function via qualified/unqualified names

我正在尝试确定是否针对Clang、GCC或两者提交错误报告(我已经针对Clang主干和GCC4.7.2进行了测试:如果有人可以针对GCC主干验证这一点会有所帮助):基本上,在默认和C++11模式下,使用-fsyntax-only可以很好地编译以下代码三行文件:classA{friendvoidf();};请注意,没有事先声明f(),但这显然没问题。但是,Clang(但不是GCC)拒绝以下内容:classA{friendvoid::f();};来自Clang的错误是“在指定范围内找不到类型为'void()'的名为'f'的函数”,但我在标准中找不到任何理由来区别对待这种情况,所以我认为这是