草庐IT

gcc_test

全部标签

c++ - 声明自身 (*this) 私有(private)的类以避免竞争条件/放弃 gcc 中线程私有(private)的请求

我想避免并行代码中的竞争条件。问题是我的类包含几个全局变量,为了简单起见,我们只说一个x以及一个我希望并行的for循环。实际代码还有一个方法,它接受一个指向类的指针,在本例中是它本身,作为它的参数,访问更多的全局变量。因此,将整个实例设为threadprivate可能是有意义的。我正在使用OpenMP。一个最小的工作示例是:#include#includeclasslotswork{public:intx;intf[10];lotswork(inti=0){x=i;};voidaddInt(inty){x=x+y;}voidcarryout(){#pragmaompparallelfo

c++ - 使用 gcc 编译 DLL

太棒了,我正在写一个脚本解释器。基本上,我希望一些类和函数存储在DLL中,但我希望DLL在链接到它的程序中查找函数,例如,programdll----------------------------------------------------sendcodetodll----->parsecode|vcodecontainsafunction,thatisn'tcontainedintheDLL|listoffunctionsinreturnvaluesentbacktotheparsingfunction我基本上想知道,如何使用gcc编译DLL?好吧,我正在使用gcc的Windo

c++ - "template"不需要关键字? [gcc/clang/Comeau 错误?]

这是测试代码templatevoidf(){Tt;t.f(0);//compilesevenwithoutthe"template"keyword,whatamImissing?}classabc{public:templatevoidf(int){}};intmain(){f();}我正在使用g++4.4.6。谢谢P.S:我已经大大编辑了我的问题。请不要介意。编辑:我向EDG的人问了这个问题,这是MikeHerrick不得不说的Wedodiagnosethisasanerrorin--strictmodeaswellasanymodethatenablesdependentnamel

c++ - GCC中enum switch的控制流不足分析

在下面的C++代码中:typedefenum{a,b,c}Test;intfoo(Testtest){switch(test){casea:return0;caseb:return1;casec:return0;}}使用-Wall编译时发出警告,表示控制到达非空函数的末尾。为什么?编辑说示例中的变量test可以包含任何值通常是不正确的。foo(12354)不编译:>test.cpp:15:14:error:invalidconversionfrom‘int’to‘Test’>test.cpp:15:14:error:initializingargument1of‘intfoo(Test

c++ - gcc 4.8.1 是否支持 C++11 垃圾回收?

我问的原因是,网络上存在相互矛盾的信息。一方面isocpp.org它指出GCC4.8.1已经完全实现了C++11标准。另一方面GCCC++11supportpage声明没有“对垃圾收集和基于可达性的泄漏检测的最低支持”。那么GCC4.8.1真的是C++11功能完整吗? 最佳答案 垃圾收集的支持是标准可选的(参见BjarneStroustrupC++11FAQ)。因此,GCC4.8.1是功能完整的,因为它实现了标准的所有强制性核心部分。评论证明我的回答不清楚,我会更具体:我只是在谈论对垃圾收集的核心支持。图书馆部分是强制性的。GCC4

c++ - 如何使用 windows/cygwin 从 CMakeLists.txt 中的 Clion 中的 GCC 和 Clang 之间切换

我放set(CMAKE_CXX_COMPILER"/usr/bin/clang.exe")运行/清理,运行/构建。我收到如下链接错误:undefinedreferenceto`std::ios_base::Init::~Init()':undefinedreferenceto`__gxx_personality_v0'大概还有其他变量需要改变。尝试将-lstdc++添加到CMAKE_CXX_FLAGS,但没有什么不同。例如,是否有CLion方式而不是CMake方式?谢谢。 最佳答案 使用CMake指定编译器有点微妙。尽管您使用的方法

c++ - 如何让 gcc 为所有符号名称添加前缀

我知道过去有一个选项-fprefix-function-name可以为所有生成的符号添加前缀,它似乎不再是gcc的一部分。还有其他方法吗? 最佳答案 我相信thisanswer会给你解决方案。简而言之,您可以像这样使用objcopy在现有库中“添加”符号:objcopy--prefix-symbols=foo_foo.o 关于c++-如何让gcc为所有符号名称添加前缀,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - clang 和 gcc 在使用智能指针时不会警告多态性的非虚基析构函数?

我们知道如果有虚函数那么基类析构函数也应该被标记为虚函数,否则当使用基类指针显式删除时它是未定义的行为如果我们希望删除带有基类指针的派生对象,基类析构函数应该被标记为虚拟的,否则就是未定义的行为。例如,structBase{virtualvoidgreet(){std::cout打电话Base*b=newDerived;b->greet();delete(b);当-Wdelete-non-virtual-dtor时,clang(gccsimilarly)会发出这样的警告:deletecalledon'Base'thathasvirtualfunctionsbutnon-virtuald

test_sizeof

test_sizeof//结论://sizeof(arrU8)得到的大小是u8类型数组的**定义大小**,在初始化的时候用//strlen(arrU8)得到的大小是u8类型数组的**实际大小**,在复制的时候用//sizeof((char*)arrU8),把一个u8*转成char*,在32位机器上结果是4,64位机器上是8//sizeof((char*)arrU8)是输出一个指针的大小//要打印u8类型的数组,直接arrU8就可以了,不用加(char*);#include#include#includetypedefunsignedcharu8;intmain(void){ u8arrU8[1

c++ - GCC 中的断言和未使用的局部变量警告混合不好?

这个问题在这里已经有了答案:Avoidingunusedvariableswarningswhenusingassert()inaReleasebuild(17个答案)关闭4年前。我对GCC中未使用的局部变量警告有疑问。通常我的代码看起来像这样:boolsuccess=foo();assert(success);这对于调试构建来说很好。然而,在发布中,断言编译为空,GCC给了我一个警告。解决此问题的最佳方法是什么?用#ifdef包装boolsuccess=似乎不是一个好的解决方案......