草庐IT

COMPILE_TIME_ASSERT

全部标签

c++ - 使用自定义时区将 boost::posix_time::ptime 转换为字符串

我有一个boost::posix_time::ptime实例并希望使用给定的boost::local_time::time_zone_ptr将其转换(“格式化”)为字符串实例。下面是一个显示我目前拥有的测试程序。它转换ptime到local_date_time据我了解,除了时间信息外,它还表示时区。在2011-08-1812:00:00UTC运行这个程序时,我期望输出2011-08-1814.00.00UTC+02:00.相反,它打印2011-08-1812:00:00UTC+00:00.即相对于打印的时区,打印的时间是正确的,但它不在我用来创建boost::local_time::l

c++ - BOOST_STATIC_ASSERT_MSG - 缺少错误信息

我在让BOOST_STATIC_ASSERT_MSG发出有意义的错误消息时遇到问题。我把它归结为:#includenamespaceStaticChecks{BOOST_STATIC_ASSERT_MSG(false,"Whereismyerrormessage?");}指定的错误信息无处可见。相反,我得到以下信息:c:\tryit>x86_64-w64-mingw32-g++-O0-g-m64-Wall-IC:\boost_1_50_0-IC:\MinGW-W64\msys\includecompiletimechecks.cpp-c-ocompiletimechecks.cpp.o

c++ - 为什么 assert 定义为 (void)0?

为什么#defineassert(expression)((void)0),而不是#define断言(表达式)在release模式下使用?(严格来说,定义NDEBUG时)听说是有原因的,忘记了。 最佳答案 ((void)0)定义assert(expression)什么都不做。使用它的主要原因是#defineassert(expression)将允许assert(expression)在没有分号的情况下编译,但如果宏定义为((void)0) 关于c++-为什么assert定义为(void)

c++ - get_time 未按预期运行

我在尝试使用put_time和get_time函数时遇到了一些问题。我拿了这段代码:#include#include#include#includeintmain(){std::tmt={};std::istringstreamss("2011-Februar-1823:12:34");ss.imbue(std::locale("de_DE.utf-8"));ss>>std::get_time(&t,"%Y-%b-%d%H:%M:%S");if(ss.fail()){std::cout来自here.但是,当同时使用gcc版本8.8.1和clang版本6.0.0进行编译时,我得到解析失败

c++ - boost::filesystem::last_write_time 在哪里?

这是我收到的链接器错误。我的所有其他boost::filesystem事情都在解决。我不明白为什么这个不。以为是boost1.40的问题,升级到1.44,问题依旧。我正在使用#defineBOOST_FILESYSTEM_VERSION3但我没有看到在这种情况下未提供last_write_time的提及。似乎缺少底层实现,即使存在api部分。1>TestPruner.obj:errorLNK2019:unresolvedexternalsymbol"void__cdeclboost::filesystem3::detail::last_write_time(classboost::fi

c++ - 为什么我收到错误 : initializing argument 1 of 'Item::Item(int)' [-fpermissive] in Eclipse when I try to compile my C++ code?

我是C++的新手,在盯着它看了太久之后终于放弃了尝试编译它。编译器似乎出于某种原因拒绝了头文件中的构造函数原型(prototype)......我无法弄清楚它有什么问题。项目.h:#ifndefITEM_H_#defineITEM_H_classItem{public:Item(int);//ThislineiswhatEclipsekeepsflaggingupwiththeerrorinthetitlevirtual~Item();Item*getNextPtr();intgetValue();voidsetNextPtr(Item*);};#endif/*ITEM_H_*/在我的

c++ - boost::posix_time::milliseconds 和 boost::chrono::milliseconds 之间的区别

我正在尝试使用condition_variable_any::timed_wait()当我将boost::chrono::millisecond传递给函数时,它无法编译:error:nomatchfor‘operator+’in‘boost::get_system_time()+wait_duration’但是,如果我将boost::posix_time::milliseconds传递给它编译的函数。问题是我不明白两者之间的区别。他们都声称是持续时间。但据我了解posix时间,它代表自纪元以来的时间,对我来说这意味着boost::posix_time::millisecondsp(10

【ssh】解决port 22:connection time out

突然gitclone报错了,之前没遇到过,记录一下报错信息:ssh:connecttohostgithub.comport22:ConnectiontimedoutPleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.运行以下命令检查ssh是否能够连接成功ssh-Tgit@github.com报错:$ssh-vTgit@github.comOpenSSH_9.2p1,OpenSSL1.1.1t7Feb2023debug1:Readingconfigurationdata/etc/ssh/ssh_configdebug

c++ - 使用C++ catch框架验证assert语句

是否可以使用C++CATCH框架来验证assert语句是否正确识别无效前提条件?//SourcecodevoidloadDataFile(FILE*input){assert(input!=NULL);...}//TestcodeTEST_CASE("loadDataFileassertsoutwhenpassedNULL","[loadDataFile]"){loadDataFile(NULL)//NowwhatdoIlookfor?} 最佳答案 假设您的示例的第一部分是被测源代码,第二部分是单元测试,那么您需要选择如何处理:一些

c++ - 索引上的 static_assert 在编译时知道

有没有办法静态断言编译时已知的索引,否则在运行时断言?示例:templateclassFoo{T_data[Dim];public:constT&operator[](intidx)const{static_assert(idxfoo;foo[0];foo[1];foo[2];//compilererrorfor(inti=0;i1}return0;} 最佳答案 您可以简单地抛出异常或断言。它将在constexpr上下文中编译失败。这仅在可以在constexpr上下文中评估抛出条件时才有效。请注意,某些版本的gcc中有一个错误会阻止