草庐IT

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++ - 将Windows消息循环封装成一个DLL

我想要一个带有窗口创建和管理代码的DLL,开发人员只需添加一个命名的main.hheader并加载DLL即可实例化一个窗口。#include"dllheader.h"voiduser_main();main=user_main;//attachusermaintothedllcallbackintuser_main(){Window*w=newWindow();}在DLL端,代码应该是这样的void(*main)()=NULL;intWinMain(...){if(main)main();//calltheuserdefinedfuncionwhile(!done){if(messag

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++ 从 .CPP 文件访问变量

我不太清楚.cpp文件之间的变量访问是如何工作的。例如:main.cppintmain(){inta=i;return0;}main2.cppinti;这会在main.cpp上生成编译器错误,告诉我不存在i中。那么,“static”关键字在这种情况下有什么区别呢?(我尝试用谷歌搜索,但大多数“静态关键字”信息页面都在谈论类和函数)main2.cppstaticinti;是一样的吗?它会阻止externinti被用来访问别处的i吗?匿名命名空间的使用在处理变量方面有何不同?main2.cppnamespace{inti;}总结:.cpp文件之间可以访问变量吗?(除了extern关键字)全

c++ - 宏的实际参数太多?

代码:#includeusingnamespacestd;#defineADD(x,y)((x)+(y))intmain(intargc,char**argv){cout编译器输出:1>Compiling...1>main.cpp1>c:\warn_test\main.cpp(9):warningC4002:toomanyactualparametersformacro'ADD'为什么这不是错误?g++(GCC)4.2.120070719[FreeBSD]给出了更合理的(在我看来)输出:main.cpp:9:18:error:macro"ADD"passed3arguments,but

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++ - 类 sf::RenderWindow' 没有名为 'clear' 的成员

我至少花了5个小时试图让sfml库与我的QT-creatoride一起工作。我已遵循本教程https://github.com/LaurentGomila/SFML/wiki/Tutorial%3A-Compile-and-Link-SFML-with-Qt-Creator但仍然没有运气。在构建简单代码后,我不断收到类成员不存在的错误。我可以创建类的实例,但在尝试使用时出现多个错误创建对象的成员。我曾尝试查找与库相关的问题、sfml问题,但我不认为我在寻找正确的问题。这有效并显示一个窗口,该窗口在强制程序退出之前永远不会关闭:#includeintmain(){sf::RenderWi

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这有什么关系,或者如何克服标准不允许的事实? 最佳答案 这里的要点是,如果你编写编译器测试代码,你可能会想用一些不同的参数集测试调用