草庐IT

c++ - C++ 中的 If 语句,主体为空 : is condition guaranteed to be evaluated?

鉴于此声明(作为旁注,这不是我喜欢的编码风格)if(doSomething()){}“C++标准”是否保证函数被调用?(它的返回值对执行路径没有影响,所以编译器可能会遵循捷径评估的思想并将其优化掉。) 最佳答案 不涉及短路运算符,因此如果在不消除副作用的情况下无法优化函数,则可以保证调用该函数。引用C++11标准:[...]conformingimplementationsarerequiredtoemulate(only)theobservablebehavioroftheabstractmachineasexplainedbel

c++ - "QObject::startTimer: timers cannot be started from another thread"没有计时器 && CPU 消耗

我在Qt(4.7.2)中创建了一个多线程应用程序。只有主线程有事件循环。问题是有时我在控制台中收到以下警告:QObject::startTimer:timerscannotbestartedfromanotherthread发生这种情况后,应用程序会消耗100%的CPU(我有一个单核CPU)。看起来,主线程消耗了所有的CPU资源。该程序不会卡住,一切仍然有效。当我在调试器中停止程序时,我没有在调用堆栈中看到我的代码。问题是我根本没有使用(明确地,无论如何)计时器。它可以连接什么?我知道,这个问题很常见,但我什至不明白要显示哪一段代码。 最佳答案

c++ - libc++ 与 VC++ : Can non-UTF conversions be done with wstring_convert?

C++11的std::wstring_convert效果很好*用于标准UTF-8UTF-16/UCS2/UCS4转换。但是,当我尝试使用不是来自的构面实例化wstring_convert或wbuffer_convert时,它没有按预期工作://worksasexpectedstd::wstring_convert>ucs4conv;//Now,byanalogy,Iwanttotrythis:std::wstring_convert>gbconv(newstd::codecvt_byname("zh_CN.gb18030"));Clang++错误提示“在~wstring_convert

c++ - eclipse 火星 : Symbol 'unique_ptr' could not be resolved

使用EclipseMars,我遇到了Symbol'unique_ptr'couldnotberesolved错误。我尝试将-std=c++11添加到CDTGCC内置编译器设置,但这没有帮助。当我重新打开Eclipse时错误消失了,但是如果我修改代码,错误又回来了。一个简单的代码示例:std::unique_ptrp1; 最佳答案 在EclipseMars中打开Window>Preferences>C/C++>Build>Settings>Discovery>CDTGCCBuild-inCompilerSettings将-std=c+

c++ - 如何允许 std :string parameter to be NULL?

我有一个函数foo(conststd::string&str);如果您使用foo(NULL)调用它,它确实会崩溃。我该怎么做才能防止它崩溃? 最佳答案 std::string有一个带有constchar*参数的构造函数。当您将NULL传递给它时,构造函数将崩溃,并且当您编写foo(NULL)时会隐式调用该构造函数。我能想到的唯一解决办法就是重载foovoidfoo(conststd::string&str){//yourfunction}voidfoo(constchar*cstr){if(cstr==NULL)//dosometh

c++ - 带有 setjmp 的 C++ 对象上的警告 "might be clobbered"

#include#includeintmain(intargc,char**){std::vectorfoo(argc);jmp_bufenv;if(setjmp(env))return1;}使用GCC4.4.1g++test.cc-Wextra-O1编译以上代码,给出了这个令人困惑的警告:/usr/include/c++/4.4/bits/stl_vector.h:Infunction‘intmain(int,char**)’:/usr/include/c++/4.4/bits/stl_vector.h:1035:warning:variable‘__first’mightbeclo

C++ : Why cant static functions be declared as const or volatile or const volatile

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++-Whystaticmemberfunctioncan’tbecreatedwith‘const’qualifier想知道为什么静态成员函数不能声明为const或volatile或constvolatile的原因?#includeclassTest{staticvoidfun()const{//compilererrorreturn;}};

c++ - x86/C++ - 指向指针 : Const being violated by compiler? 的指针

我正在为我的学生项目的游戏引擎开发一个共享指针(称为句柄)实现,我们遇到了一个我们无法解释的错误。出于某种原因,在我们工厂的某个时刻,有一个无效的内部指针通过句柄传递给工厂,这导致我们的原型(prototype)加载期间发生崩溃。我们调试了几个小时的过程,并将任何复杂的语句分解为最简单的版本,以便于调试。我最终将问题归结为Handle类的复制构造函数。但是,似乎仍然存在释放内部指针的中间步骤。我阅读了所有我能找到的关于可能导致此问题的文章,但没有找到任何内容。最后,我决定查看反汇编代码,看看我是否能弄清楚发生了什么。这是没有反汇编的复制构造函数。templateHandle::Hand

c++ - zmq-cpp : recv() waits for data despite ZMQ_DONTWAIT being set

我正在尝试使用ZMQ_DONTWAIT标志通过ZeroMQ实现非阻塞接收方法,但是recv()的行为就像在没有标志的情况下被调用:autostart=std::chrono::steady_clock::now();autohave_data=sock_->recv(&reply,ZMQ_DONTWAIT);autoduration=std::chrono::duration_cast(std::chrono::steady_clock::now()-start).count();std::coutsock_是一个zmq::socket_t实例化为REQ套接字。在这种情况下,have_

asp.net - ASP.NET 中的 C++/CLI 组件出现 "module could not be found"错误

我必须在我的一个ASP.NET项目中包含一个(托管的)C++/CLI组件,它自身引用了一些其他(非托管的)C++DLL。应该没问题-.NET3.5在编译项目时很高兴,一切似乎都很好。C++/CLI组件和其他C++DLL由另一个部门在VisualStudio2005中使用“任何CPU”编译为发布版本。安装了VC++2005Redistributable包。当我在普通的.NET控制台应用程序中运行相同的代码时,它可以毫无问题地工作。现在虽然此代码在控制台应用程序中运行,但它没有被ASP.NET正确托管-它会导致初始页面加载错误(甚至在进入Global.asax之前)。为了测试和调试,我使用