草庐IT

include_guard_symbol

全部标签

c++ - 内部与外部包括 guard

我听说您应该更喜欢编写内部包含保护而不是外部包含保护。我在互联网上搜索过,但没有找到答案。这是Herb&Andrei的C++编码标准一书的片段,其中显示了“外部包含防护”:Avoidusingtheobsoleteexternalincludeguardsadvocatedinolderbooks:#ifndefFOO_HJNCLUDED_//NOTrecommended#include"foo.h"#defineFOO_HJNCLUDED_#endif现在,这导致了下面的问题:问:什么是内部包含守卫,什么是外部包含守卫?两者有什么区别,为什么internalincludeguards

c++ - 什么是正确的 LLVM header guard 样式?

在clangtidy中,检查[llvm-header-guard]寻找LLVM样式的头文件防护,但我找不到任何正确的LLVM头文件防护样式的示例,特别是给定义的名称结构,codingstandards页面没有提及任何内容。 最佳答案 查看单元测试:https://github.com/llvm-mirror/clang-tools-extra/blob/master/unittests/clang-tidy/LLVMModuleTest.cpp它似乎接受了一些常用模式的变体。对于名为include/llvm/ADT/foo.h的文件

c++ - 尝试构建共享库 g++/mac 时 undefined symbol _main

我正在尝试在Mac上构建libdecodeqr。我的C++构建和链接历史都在Windows上,所以这是一个令人兴奋的发现之旅。我终于到了要创建链接库的地步。我正在运行的命令是:g++-shared-olibdecodeqr.so.0.9.3bitstream.ocodedata.ocontainer.oecidecoder.oformatinfo.ogalois.oimagereader.olibdecodeqr.o-L/opt/local/lib-archi386-lcxcore-lcv结果是:Undefinedsymbols:"_main",referencedfrom:start

c++ - #include <string> 在 header 中定义了一些结构。错误 : string does not define a type

#ifndefSTRCUTS_H#defineSTRCUTS_H#includestructmenuEntry{stringitemID;//'string'doesnotnameatypestringitemName;//'string'doesnotnameatype};#endif当我将#include放在header保护上方时,我得到了同样的错误。想一想,我以前在将结构定义放在标题中时遇到过奇怪的麻烦。一定是我没有得到的东西。 最佳答案 您需要将string更改为std::string,即#ifndefSTRCUTS_H#d

c++ - ld : duplicate symbol

我有rand.cpp和rand.hpp文件,并且有rand_unif()函数。我在sim_engine.hpp文件中包含了rand.hpp文件。在main.cpp文件中,我包含了sim_engine.hpp文件。如果我运行makefile然后我得到这个错误ld:duplicatesymbolrand_unif()insim_engine.oandmain.oforarchitecturex86_64collect2:ldreturned1exitstatussim_engine.hpp是唯一包含rand.hpp的地方。main.cpp不包含rand.hpp但包含sim_engine.h

c++ - 如何在 Mac 上将 #include <random> 与 g++ 一起使用?

我正在尝试编译一个从别人那里得到的C++程序。它是在Windows上开发的,g++给出了一些编译错误。其中之一是#include这给出了以下错误:CandidateSolution.cpp:2:18:error:random:Nosuchfileordirectory。我试图找到可以从中获取error.h文件的位置,但找不到。我怎样才能让它发挥作用? 最佳答案 该头文件是C++11的新头文件。尝试使用-std=c++11或-std=c++0x。另外,请确保您的编译器是最新的。 关于c++

c++ - 错误 LNK2019 : unresolved external symbol "" referenced in function

我目前在编译代码时遇到以下错误:errorLNK2019:unresolvedexternalsymbol"public:void__thiscallAgent::printSelf(void)"(?printSelf@Agent@@QAEXXZ)referencedinfunction"public:void__thiscallWorld::processMouse(int,int,int,int)"(?processMouse@World@@QAEXHHHH@Z)World.obj这是我的代码代理.h:classAgent{public:Agent();voidprintSelf(

c++ - 错误 LNK2019 : unresolved external symbol

好的,所以我在尝试找出代码中的问题时遇到了问题。我有很多代码,所以我只会发布编译时出现问题的相关部分。我在一个类中有以下函数,它会编译并且一切都会正常运行,直到我调用函数“CalculateProbabilityResults”并在其中运行第7行代码。我已经在我的程序中“取消注释”了这行代码,这样您就可以更容易地找到它。我很确定我有正确的#include指令,因为它在不调用函数时编译得很好,所以这不是问题,不是吗?我知道我的一些命名符号需要一点帮助,所以请多多包涵。在此先感谢您的帮助。intSQLServer::CalculateProbabilityResults(intprofil

c++ - 成员类与#includes

我最近发现在您的头文件中包含#include是一种不好的形式,因为任何使用您的代码的人都会获得他们不一定想要的所有这些额外包含。但是,对于将成员变量定义为另一个类的类型的类,还有什么选择呢?例如,我最长的时间是按以下方式做事:/*HeaderfileforclassmyGrades*/#include//bad#include"classResult.h"//badclassmyGrades{vectorgrades;intaverage;intbestScore;}(请原谅这是一个高度人为的例子)所以,如果我想去掉#include行,有什么方法可以保留vector还是我必须在完全不同

c++ - 在运行时再次出现 "undefined symbol",C++

我有一个数据类型,我可以实例化该类型的变量。像这样:FetchAddrfaddr(VirtualMemoryAddress(0x0a));FetchAdr的定义是:structFetchAddr{VirtualMemoryAddresstheAddress;FetchAddr(VirtualMemoryAddressanAddress):theAddress(anAddress){}};现在我有一个faddr是私有(private)(或公共(public))变量的类classFLEXUS_COMPONENT(BPred){staticFetchAddrfaddr;public:FLEX