草庐IT

c++ - SHIMVIEW : shiminfo means? 是什么

什么是警告:SHIMVIEW:ShimInfo(Complete)在gdb中表示?在win832位上使用gcc4.6.2和gdb7.4。 最佳答案 SHIMVIEW消息由Windows兼容性子系统生成,例如如果进程配置为在XP兼容模式或许多其他兼容性设置之一下运行。您看到的这条消息不一定与您正在处理的项目相关-它可能只是gdb显示来自其他已激活兼容模式的进程的调试消息。如果它与您有关并且您真的想知道哪个进程正在执行它,请使用DebugView,打开PID显示,并观察哪个进程ID正在打印消息。

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 中的 C++ 名称修饰

C语言不像C++那样使用名称修饰。当函数原型(prototype)在不同的文件中以不同的方式声明时,这可能会导致细微的错误。简单示例:/*file1.c*/inttest(intx,inty){returny;}/*file2.c*/#includeexterninttest(intx);intmain(){intn=test(2);printf("n=%d\n",n);return0;}当使用C编译器(在我的例子中是gcc)编译此类代码时,不会报告任何错误。切换到C++编译器后,链接将失败并出现错误“未定义对‘test(int)’的引用”。不幸的是,在实践中这并不是那么容易——在某些

c++ - 有什么方法可以转储 g++ 编译程序的类布局

当使用g++编译时,-fdump-class-hierarchy以(或多或少)人类可读的格式导出程序的虚表。但是,生成的文件只包含有关vtable的信息,不有关类布局本身的信息。我想获得我所有程序类布局的综合列表。clang提供了-cc1-fdump-record-layouts参数来实现这一点。可以使用-d1reportAllClassLayout调用MS编译器。是否有任何g++开关可以执行此操作? 最佳答案 如果程序编译时带有调试信息,您可以使用pahole从调试信息中转储struct和vtable布局:g++-ggdb3-cp

c++ - 模板类实例化的多重继承以及对成员函数的访问

让我们看一下代码:templateclassS{public:voidadd(Cc){++cnt;}size_tsize()const{returncnt;}private:size_tcnt{};};structFoo1{};structFoo2{};structFoo3{};classZ:publicS,publicS,publicS{public:usingS::add;usingS::add;usingS::add;usingS::size;//(1)usingS::size;//(2)usingS::size;//(3)};用法是这样的:Zz;z.add(Foo1{});z.

c++ - 如何编译在docker中使用内核函数的C代码并在容器中使用pci设备?

我有一个Makefile一些使用PCI设备的C++代码all:g++-oexecutablemain.cppdragon.pb.cc-std=c++11-O3-I/usr/include/postgresql-I/usr/include/hiredis-lzmq-lprotobuf-lpthread-lpq-lhiredisclean:rmexecutable并且它依赖于这个使用内核函数的C库。这个库的Makefile是#distandbuildarefolders,notphonytargets.PHONY:allpackagecleanall:dragon.pb.ccdragon_

c++ - clang 和 gcc 在处理模板生成和静态 constexpr 成员时的不同行为?

考虑以下程序(抱歉太长了;这是我能想到的表达问题的最短方式):#include#include#includeusingnamespacestd;std::vector&test_vector(){staticstd::vectorrv;returnrv;}templateclassRegistrarWrapper;templateclassRegistrar{Registrar(){auto&test_vect=test_vector();test_vect.push_back(std::type_index(typeid(T)));}friendclassRegistrarWrap

c++ - 如何从 gcc 的预编译头文件中获益最多?

我有一个包含许多目标的C++项目,其中包括大量boost头文件和其他行密集型头文件。大多数目标都包含相同的header。因此,我认为这可能是使用预编译头文件(pch)的理想选择。所以我创建了一个包含最多头文件的头文件并对其进行了预编译。这将编译单元的代码行从350k减少到120k(我将-save-temps标志传递给gcc以进行检查)。我检查它是否与-H参数一起使用,并且pch前面有一个感叹号。预编译头有550MB。不过,编译时间只从23秒减少到20秒。预编译header是否会带来这种小改进?如果不是,我做错了什么?预编译header的编译速度最快的是什么?编辑:这是gcc命令:/us

c++ - 模板的 typedef 包括 char[][] - 适用于 VS2008 但不适用于 gcc

我有一些正在使用的库代码。它在VisualStudio(2008)下编译和工作,但不是GCC(v4.8.4.)在标题中我们有:externconstcharmenu_styles[MENU_COUNT][MAX_LEN];typedefSysEnumMenuStyleEnum;SysEnum在哪里(在另一个文件中定义):templateclassSysEnumgcc遇到错误:error:‘menu_styles’cannotappearinaconstant-expression我完全同意。(此外,它是constchar*转换为char*)。我希望VS2008只是用constchar*

c++ - 模板变量特化(针对模板模板类)

当我尝试为通用容器(例如std::list而不是特定容器,例如std::list)专门化模板变量时,我收到一个链接错误gcc5.3(但不是clang3.5)/tmp/ccvxFv3R.s:Assemblermessages:/tmp/ccvxFv3R.s:206:Error:symbol`_ZL9separator'isalreadydefinedhttp://coliru.stacked-crooked.com/a/38f68c782d385bac#include#include#include#include#includetemplatestd::stringconstsepar