草庐IT

c++ - 在 GCC 中替换 "fvtable-gc"

GCCv4.7.1中是否有“fvtable-gc”选项的替代品(GCCv3.x支持)?我想在链接过程中删除未使用的虚函数。fvtable-gcEmitspecialrelocationsforvtablesandvirtualfunctionreferencessothatthelinkercanidentifyunusedvirtualfunctionsandzerooutvtableslotsthatrefertothem.Thisismostusefulwith-ffunction-sectionsand-Wl,--gc-sections,inordertoalsodiscard

c++ - 在 GCC 中列出库函数

是否可以在GCC命令行中列出任何库/头文件中可用的所有库函数?是否有类似JAVAP之类的可用于Java的程序?谢谢。 最佳答案 您可以使用objdump列出共享库(或可执行文件)中的符号:$objdump-T/usr/lib/libclang.so0000000000124150gDF.text00000000000000c1Baseclang_reparseTranslationUnit000000000010fe40gDF.text0000000000000021Baseclang_getNullRange00000000001

c++ - 将 OpenGL 模板功能移植到 DirectX 11

我有一些用OpenGL编写的渲染代码。我使用模板缓冲区来实现裁剪://Let'sassumethisisdoneinrenderloop.if(!already_created()){create_stencil_attachment_and_bind_to_FB_as_depth_stencil_attachment();}glEnable(GL_STENCIL_TEST);glColorMask(0,0,0,0);glDepthMask(0);glClearStencil(0);glClear(GL_STENCIL_BUFFER_BIT);glStencilFunc(GL_ALWA

c++ - GCC 4.6.3 - 模板特化受优化级别影响?

在我正在开发的应用程序中,我有一个这样的模板函数:templatevoidCIO::writeln(Titem){stringstreamss;ss这个函数从几个地方调用,T=constchar*和T=std::string。使用CodeSourceryLite2008.03-41(GCC4.3.2),此编译和链接很好,带有-O3编译器标志。但是,由于我更改为CodeSourceryLite2012.03-57(GCC4.6.3),使用-O3进行编译是可以的,但随后链接失败并显示undefinedreferencetovoidCIO::writeln(std::string)。.使用-

c++ - GCC 消耗太多内存!!图形工具

编译时graph-toolgcc编译器消耗了超过7Gb的内存,并且在消耗越来越多之后什么也没有发生,我被迫停止编译。我试图嵌入acompilersuffix:CFLAGS="$CFLAGS--paramggc-min-expand=0--paramggc-min-heapsize=8192"但我无法将它带入./configure过程。有人知道这个问题吗?(应该没什么区别,但我的操作系统是Archlinux-64)编辑(1):我现在能够添加CFLAGS进行配置,但它继续消耗无限数量的内存。我的Gcc版本是4.8.2!编辑(2):新版图形工具(2.2.28)解决了我的问题,因为他们修复了这

C++ 11 绑定(bind) std::function 与存储元组和解包

首先,我对C++11还是比较陌生,所以如果我遗漏了什么,请原谅我的疏忽。所以我想做的基本上是让调用者传入一个函数和该函数的任意参数,将其存储起来,然后稍后异步调用它。似乎有2个主要选项:使用std::bind将std::function绑定(bind)到它的参数(使用可变参数模板获得),然后稍后调用它将参数包转换为一个元组,存储它和std::function,然后再次将元组解压为多个参数并使用它调用函数问题是,一种方法比另一种更好吗?两者之间有优缺点/性能优势吗?谢谢!编辑:根据要求,这里有一个澄清,第一种情况是更早的绑定(bind),我将args绑定(bind)到函数,只要调用者传递

C++11 动态线程池

最近,我一直在尝试寻找一个线程化并发任务的库。理想情况下,一个在线程上调用函数的简单接口(interface)。任何时候都有n个线程,一些线程比其他线程完成得更快,并且到达时间不同。首先我尝试了Rx,它在C++中非常棒。我也研究过Blocks和TBB,但它们都依赖于平台。对于我的原型(prototype),我需要保持平台独立性,因为我们还不知道它将运行在什么平台上,并且在做出决定时可能会发生变化。C++11有很多关于线程和并发的东西,我发现了很多这样的线程池示例。https://github.com/bilash/threadpool类似的项目使用与std::thread和std::m

c++ - c++11 中的 brace-init 是否存在任何效率问题?

我正在考虑重构一个中等规模的代码库,使其始终使用大括号初始化。有什么我应该注意的效率问题吗?一些示例可能是POD类型和内置类型,以及具有大量构造参数的大型类呢? 最佳答案 这取决于您所说的“始终使用大括号初始化”是什么意思。如果你像这样转换一个构造函数Xx(a,b,c);进入Xx{a,b,c};(并且行为不会因为选择了不同的构造函数而改变)那么生成的代码的效率应该不会提高或降低。另一方面:std::vectorv{"longcharacterstringa","longcharacterstringb","longcharacter

c++ - 如何同时满足 gcc4.1.2 和 gcc 4.7.3

一个项目需要在gcc4.1.2(公司服务器)和gcc4.7.3+(桌面linux系统)下编译,遇到一些问题:1.gcc4.1.2没有Wno-unused-result和Wno-unused-but-set-variable。我尝试用Wno-unused替换后两者,但仍然生成忽略返回值的内置函数错误。2.gcc4.1.2中也没有Wno-narrowing,还有什么我可以用的吗?我应该怎么做才能让他们都开心? 最佳答案 我建议您在makefile中处理两个版本之间的差异。您可以检测GCC版本,如果GCC版本支持它们,则可以pramati

C++11 无锁自动更新 2 个变量

我想更新atomicX当一个线程找到一个新的最小值来改变它。当它确实设置了新的最小值时,我还想更改一个变量y,原子地。有没有办法在没有锁的情况下做到这一点?同时在多个线程上执行的线程函数示例:uint64_tx=atomicX;inty=g();for(intnewX=0;newX我可以这样使用锁:inty=g();for(uint64_tnewX=0;newX我也愿意接受任何更清晰的结构,或其他方式一起完成。我不喜欢我必须拥有相同的newX条件两次,否则我必须打破循环。 最佳答案 有一个相当简单且可能足够便携的解决方案,即使用指针