草庐IT

gtest_main

全部标签

c++ - 静态内联变量是否需要在main之前初始化?

如果我有以下A.h文件(仅header):#pragmaoncestructA{staticinlinestructInitializer{Initializer(){std::cout#include"A.h"(来自另一个header,将包含在main.cpp中)是否足够,所以Initializer::Initializer()之前被调用main()?我读到标准要求仅在使用前使用动态初始化来初始化静态变量。Itisimplementation-definedwhetherornotthedynamicinitialization(8.5,9.4,12.1,12.6.1)ofanobj

c++ - 在静态库中调用 main 之前的函数

我有一个类型注册系统,用于自定义形式的运行时类型信息。到目前为止,我已经使用以下宏在main之前调用注册函数并注册类型:#defineREGISTRATION\staticvoid_register();\namespace{structtemp{temp(){_register();}};}\staticconsttempCAT(temp,__LINE__);\staticvoid_register()这样我就可以在许多不同的cpp文件中执行此操作:REGISTRATION(){RegisterNewType(vec2)->RegisterMember("x",&vec2::x)->

c++ - Boost::Test——Main() 的生成?

我对设置boost测试库有点困惑。这是我的代码:#include"stdafx.h"#defineBOOST_TEST_DYN_LINK#defineBOOST_TEST_MODULEpevUnitTest#includeBOOST_AUTO_TEST_CASE(TesterTest){BOOST_CHECK(true);}我的编译器生成非常有用的错误消息:1>MSVCRTD.lib(wcrtexe.obj):errorLNK2019:unresolvedexternalsymbol_wmainreferencedinfunction___tmainCRTStartup1>C:\Use

c++ - gdb backtrace 没有显示 main() 的完整堆栈跟踪

我正在使用Xalanlibrary.我的程序在Xalan调用中的某处崩溃。我希望看到从main()一直到崩溃点的完整堆栈跟踪。我正在使用以下命令行进行编译g++-oprogram.out-g-O0-lxalan-cmyprogram.out我正在使用“backtracefull”命令并获得以下输出#00xb79313b4inxalanc_1_11::XPath::findRoot(xalanc_1_11::XPathExecutionContext&,xalanc_1_11::XalanNode*,intconst*,int,xalanc_1_11::MutableNodeRefLis

c++ - 构造函数采用参数时的GTest夹具?

我有一个简单的示例类。它有一个数据成员,它是一个指向Armadillo矩阵的指针的std::vector。构造函数将这样一个vector作为唯一的参数。这是文件TClass.cpp:#include#includeclassTClass{private:std::vectormats;public:TClass(std::vectorm_);arma::mat*GetM(intwhich){return(mats.at(which));};};TClass::TClass(std::vectorm_){mats=m_;}我想构造一个GTestfixture来测试成员函数GetM。这是我

c++ - 谷歌测试 Gtest.cc :812: error: 'gettimeofday' was not declared in this scope

我正在尝试通过命令行通过MinGW编译Google测试,但是当我尝试使用命令进行编译时gcc-ID:\gtest-ID:\gtest\include-ID:\gtest\include\gtestsrc\gtest_main.ccsrc\gtest-all.cc它抛出错误Gtest.cc:812:错误:'gettimeofday'未在此范围内声明我通过VisualStudio成功编译,所以我猜这不是代码的错误。还有其他人遇到过这个问题并且知道解决方案吗? 最佳答案 and是两个不同的包含

c++ - 在通过在 main 中声明数组来解决之前,数组绑定(bind)不是整数常量

程序1#includestd::size_tthree(){return3;}inti[three()];intmain(){return0;}方案二std::size_tthree(){return3;}intmain(){inti[three()];return0;}这里的问题是程序1如预期的那样给出了编译错误"error:arrayboundisnotanintegerconstantbefore']'token"但是不知道为什么程序2编译成功了? 最佳答案 C99允许inti[three()];声明一个变长数组,但只允许if

c++ - "If you' 已经写了一个编译测试,你've written a call to main"

在程序中调用mainviolatesC++标准voidf(){main();//anendlessloopcallingmain?Nothat'snotallowed}intmain(){staticint=0;std::cout在lecture中ChandlerCarruth,大约在“22.40”说ifyou'vewrittenacompilertestyou'vewrittenacalltomain这有什么关系,或者如何克服标准不允许的事实? 最佳答案 这里的要点是,如果你编写编译器测试代码,你可能会想用一些不同的参数集测试调用

c# - gtest (C++) 和 nunit (C#) 中双重比较的区别

我已经将带有gtest测试的c++项目移植到带有nunit测试的c#项目。现在我遇到了浮点精度的问题。在nunit测试中我有问题(红色)Assert.AreEqual(0.7,7*0.1);在gtest测试中我有:ASSERT_DOUBLE_EQ(0.7,7*0.1);没问题(绿色)现在的问题是为什么??? 最佳答案 GoogleTest的ASSERT_DOUBLE_EQ()验证实际值是否在预期值的4个ULP之内(更多信息请参见https://github.com/google/googletest/blob/main/docs/a

c++ - 使 main() "uncrashable"

我想编写一个守护进程管理器来确保所有守护进程都在运行,就像这样(简化的伪代码):voidwatchMe(filename){while(true){system(filename);//freezesaslongasfilenameruns//oh,filenamemustbecrashed.Nevermind,willberestarted}}intmain(){_beginThread(watchMe,"foo.exe");_beginThread(watchMe,"bar.exe");}这部分已经在工作了——但现在我面临的问题是,当观察到的应用程序——比如foo.exe——崩溃时