草庐IT

c++ - Clang UBSAN 报告类型 'std::_Ios_Fmtflags' 的无效值

以下代码用clangUBSAN编译会崩溃#include#include#include#includetemplateinlinestd::stringfloatToString(Ti){printf("infloatToString\n");std::stringstreamss;ss.precision(6);ss用Clang3.6编译:$>clang++-3.6-fsanitize=undefined-fno-sanitize=float-divide-by-zero,vptr,function-fno-sanitize-recover-otesttest.cpp然后程序崩溃了

c++ - 使用 atomic<bool> 的简单自旋锁中的数据竞争

这个问题在这里已经有了答案:C++11ImplementationofSpinlockusingheader``(2个答案)关闭7年前。#include#include#include#include#include#includeusingnamespacestd;classspinlock{private:atomicflag;public:spinlock():flag(false){}voidlock(){booltemp=false;while(!flag.compare_exchange_weak(temp,true,std::memory_order_seq_cst)&&

c++ - 在#include 中获取当前编译单元名称

我当前的目标是创建一行(或尽可能少的)代码,将事件编译单元的其余部分切换到未优化的调试配置。我的第一直觉是:FORCE_DEBUG;//codebelowherewillbeforcedtobeunoptimizedandinadebugenvironment或#include"ForceDebug.h"//codebelowherewillbeforcedtobeunoptimizedandinadebugenvironment会很理想。在我的工作区中,要转换为未优化的调试配置,我需要更改pragma优化级别,还需要#undef一些宏和#define其他宏。FORCE_DEBUG宏不

c++ - 如何在 Visual Studio 中的 CppUnitTestFramework (C++) 中设置超时?

如何在使用CppUnitTestFramework的Microsoft单元测试中为C++中的测试方法添加超时?我在网上找到的大多数解决方案都是针对CSharp项目的,我可以在其中添加诸如[TEST_METHOD,TIME_OUT(80)]之类的行,但是在测试C++(VC++)代码时这些行不起作用我试过下面的代码#include"stdafx.h"#include"CppUnitTest.h"#include"../src/factorial_dp.cpp"#include"stdio.h"usingnamespaceMicrosoft::VisualStudio::CppUnitTes

C++ 使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串给出意外结果?

我正在尝试解析格式为YYMMDD的日期。作为测试,我尝试了以下代码:#include#include#include#includeintmain(){std::tmt={};std::istringstreamss("191203");ss>>std::get_time(&t,"%y%m%d");if(ss.fail()){std::cout使用Coliru、GCC6.1(C++17)进行测试,输出为:SunMar000:00:001912我期望的是:MonDec300:00:002019格式字符串有问题吗? 最佳答案 你可以使用

c++ - DLL注入(inject)记事本

我想在记事本中显示一个消息框,所以我找到了一个简单的dll注入(inject)示例。注入(inject)器本身不是我的并且似乎工作正常(获取进程的id,创建一个远程线程,获取dll文件的绝对路径)。我认为问题在于dll的实现。项目在没有任何警告的情况下编译,但没有达到预期的结果。你能看一下并帮助我理解问题吗?(我已经把发布版本的dll放到了injector项目文件夹中)dllmain.cpp://dllmain.cpp:DefinestheentrypointfortheDLLapplication.#include"stdafx.h"#include"dll.h"#include#i

c++ - #include "MyClass.h"和 #include ".\myclass.h"有什么区别

我正在VS2010中进行开发,并希望将代码添加到现有项目中。顺便说一下,这是一个Win32/MFC。我忍不住注意到在MyClass类中(在本例中MyClass是CDialog类的扩展),cpp文件的顶部包含以下内容:#include"MyClass.h"#include".\myclass.h"我注意到输入的第二个包含没有大写,但我不太明白为什么? 最佳答案 "MyClass.h"将在您的项目设置中定义的INCLUDE_DIR路径上进行搜索。"./myclass.h"将在与当前文件相同的目录中搜索。Windows文件名不区分大小写,

c++ - 如何动态包含makefile

现在我有两个makefile,A.mk和B.mk。A.mk将包含B.mk但是B.mk是由A.mk中执行的一些命令动态生成的A.mk的伪代码如下commandtogenerateB.mkincludeB.mkcompileandlink问题是include命令类似于C文件中的#include宏。A.mk尝试在执行命令之前加载B.mk。谁能给我一些建议?非常感谢杰瑞 最佳答案 可以让它像这样工作:a.mk(此时,b.mk不存在)-includeb.mkall:@echofoo:$(FOO)b.mk:@echo"FOO=2">b.mk使用

c++ - 编译错误 : `‘error_category’ does not name a type` with g++ 6. 3.0

我尝试编译这个C++/Python库https://bitbucket.org/fluiddyn/fluidfft如果安装了mpi4py,它运行良好。如果没有安装mpi4py,不使用MPI的代码无法编译。编译Cython文件时出现错误。错误很长,开始于:Infileincludedfrom/usr/include/c++/6/bits/ios_base.h:46:0,from/usr/include/c++/6/ios:42,from/usr/include/c++/6/ostream:38,from/usr/include/c++/6/iostream:39,fromsrc_cpp/

c++ - 在 C++ 程序中使用 libcurl 会导致 Visual C++ 编译器发出错误

我已经使用VisualC++编译器将Windows上的libcurl编译成一个dll。除了已编译的libcurl源代码之外,该dll还包含一个简单的测试程序,如下所示:header(HttpClient.h):#pragmaonce#include#include"curl/curl.h"namespaceMy::Project{classHttpClient{public:HttpClient();~HttpClient();std::stringGet(std::stringaddress);private:CURL*easy_handle;};}实现(HttpClient.cpp