草庐IT

protect_code

全部标签

c++ - 访问派生类中类的 protected 成员

我这里有一个旧代码库,他们在其中使用了protected成员变量。可以讨论这是否是一个好主意。但是,代码必须使用gcc3编译得很好。我有一个派生模板类Bar,它像这样使用类模板Foo中的protected成员xtemplateclassFoo{public://stuff...protected:some::typex;}templateBar:Foo{public:voidcleanup();}在cleanup()的方法声明中有一些用x完成的事情templatevoidBar::cleanup(){doSomeThingCleanUpLike(x);}这不适用于gcc4,尽管它应该适

c++ - 如何从派生类访问基类中的 protected 方法?

下面是一段令我恼火的代码示例:classBase{protected:virtualvoidfoo()=0;};classDerived:publicBase{private:Base*b;/*Initializedbyconstructor,notshownhereIntendedtostoreapointeronaninstanceofanyderivedclassofBase*/protected:virtualvoidfoo(){/*Someimplementation*/};virtualvoidfoo2(){this->b->foo();/*Compilatorsetsan

Job for docker.service failed because the control process exited with error code.:已解决

Jobfordocker.servicefailedbecausethecontrolprocessexitedwitherrorcode.See“systemctlstatusdocker.service”and“journalctl-xe”fordetails.:已解决问题描述Jobfordocker.servicefailedbecausethecontrolprocessexitedwitherrorcode.See“systemctlstatusdocker.service”and“journalctl-xe”fordetails.docker.service的作业失败,因为控制进程

c++ - LLVM 即时编译 : pass C++ exception through JIT code back to host application

我正在开发一个项目,我使用clang生成一些LLVMIR,然后在我的主机应用程序中进行JIT编译和运行。JIT代码调用宿主应用程序中的某些函数可能会引发异常。我希望通过JIT代码抛出异常并在主机应用程序中捕获。据我所知,这应该与LLVM一起使用,但不幸的是,我的测试应用程序总是因“在抛出‘int’实例后调用终止”而崩溃。让我举个简单的例子。我使用clang3.5将以下简单程序编译成LLVMIR:externvoidtest();extern"C"voidexec(void*){test();}与./clang-O0-S-emit-llvmtest.cpp-c结果为test.ll;Mod

c++ - 使用 GCC 查找无法访问的函数 ("dead code")

我正在寻找一种在(非常)大的C++项目中查找静态无法访问的函数的方法。我曾尝试使用doxygen和此处建议的其他静态分析工具,但似乎该项目太复杂了,他们无法处理。最后我决定使用GCC工具(g++、gprof、gcov等)是最安全的选择,尽管我不知道该怎么做。我认为g++优化消除了静态无法访问的函数,但我不确定如何获取它消除的函数的名称。你有什么建议吗? 最佳答案 死代码优化通常由链接器完成——编译器没有概览。但是,编译器可能已经删除了未使用的static函数(因为它们具有内部链接)。因此,您不应该查看GCC选项,而应该查看ld选项。

C++ 嵌套结构继承规则(访问 protected 成员)

这个问题在这里已经有了答案:Protecteddatainparentclassnotavailableinchildclass?(4个答案)关闭5年前。谁能给我解释一下为什么(比如,“为什么语言是这样的?”)下面的代码在B::C::bar的第二行有一个编译错误?classA{public:structD{voidcall_foo(A&a){a.foo();}};protected:voidfoo(){}};classB:publicA{structC:publicA::D{voidbar(A&a,B&b){b.foo();//OKa.foo();//Error.Huh?call_fo

c++ - Visual Studio : MSB3073 error exited with code 1

大家。我正在VisualStudio2013中编译DCMTK3.6.1。我的操作系统是Windows8。我还使用了CMake3.2.3。我已经为ALL_BUILD项目成功编译了x64版本的debug和release。但是,对于INSTALL项目,我无法编译它,因为出现以下错误:Error1errorMSB3073:Thecommand"setlocal"C:\ProgramFiles(x86)\CMake\bin\cmake.exe"-DBUILD_TYPE=Release-Pcmake_install.cmakeif%errorlevel%neq0goto:cmEnd:cmEnden

c++ - 依赖于其他 slib 的静态库是否需要它们的实际 'code' 才能工作?

抱歉问题标题模糊,我只是想确定一些事情。静态库不与其他静态库链接,对吗?所以当我写一个slib:A,它使用另一个:B的功能时,我必须提供的只是B到A的header,而且只有那些,即使A实际上使用了B的功能?是吗?只要使用A的exe:X,有没有指定B.lib作为链接器输入?因此在链接时,链接器采用A.lib,它基本上只知道B的函数在其代码中的某处被调用,并以某种方式从B.lib中填充该信息,使A.lib成为“完整的”,在X与它现在工作的部分链接之前?这些问题背后的动机是摆脱一些链接器警告4006和丢弃的双重定义,我认为这应该可以解决问题,如果这实际上是一种有效的方法的话。

c++ - 使用 Code::Blocks 调试时提供程序参数

我似乎无法弄清楚如何将程序参数添加到代码块调试器的启动命令中。有人知道怎么做吗? 最佳答案 我找到了。项目-->设置程序参数(我一直在查看项目设置,就像visualstudio一样) 关于c++-使用Code::Blocks调试时提供程序参数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1218014/

[Windows]下visual studio code C#环境的搭建和debugger的配置

通过一中午和一下午的辛勤劳作,谢师傅又因工作不得不学习C++和相关的vscode知识。在此,谢师傅按先后顺序严谨客观的记录下每一步的细节步骤。一、下载MinGW二、环境变量配置 三、启动MinGW并下载相关的库文件下载的库文件,同一存在放\MinGW\bin目录下,注意同时下载gdb,gcc,g++的所有相关文件。否则很容易由于缺失某一方面的库文件导致无法在vscode中充分使用相关功能。i.e.gdb与cppdebugger相关,尤其通过remote插件连接到Linux环境时,没有GDB库文件,无法与CMake一起作用在Linux环境中产生相关的.json文件,从而导致无法再Linux环境中