草庐IT

C++ 将无符号转换为有符号

我试图复制this但它不会编译。unsignedcharx=0;reinterpret_cast(x);它说C:\Users\SXG5558\Documents\Arduino\sketch_jun30a\sketch_jun30a.ino:Infunction'voidsetup()':sketch_jun30a:3:error:invalidcastfromtype'unsignedchar'totype'signedchar'reinterpret_cast(x);^exitstatus1编辑:明确地说,我真的很想将内存中的位从有符号重新解释为无符号。我正在编写一个读取和写入未签

C++ 使用来自其他命名空间的符号而不使它们可以从外部访问

有没有类似于usingnamespace的构造这不会使导入的符号在命名空间的主体(或多个主体)之外可见?在此示例中,whatever中的每个符号和other_namespace可通过Foo::访问还有……我想要一种方法来防止这种情况发生。namespaceFoo{usingnamespacewhatever;usingnamespaceother_namespace;//somedefinitions}作为一个完整的例子,这个程序是有效的。如果替代usingnamespace具有预期的语义存在并被使用,它不会是。namespacea{intfunc(intx){return10;}}n

c++ - 是否可以将 C++ 命名空间添加到 C 库中的所有符号?

我正在修改一个大型C++项目,该项目在其主要header之一中定义了一个枚举FooBar。该枚举无处不在,遗憾的是没有命名空间。在那个项目中,我想使用一个C库,不幸的是,它还在同一个全局命名空间中定义了一个枚举FooBar。我无法更改库实现,并且很难在C++项目中重命名或命名枚举,因为到处都在使用它。所以理想情况下,我会为来自C库的所有符号添加一个命名空间。我试过类似的东西:namespacec_library_foo{#include}...c_library_foo::c_library_function()...就编译而言,它工作正常,但当然链接器随后无法解析库中的符号,因为命名

C++正则表达式匹配没有标点符号的单词

我搜索了,找不到任何东西。为了不再浪费我的时间,因为答案对其他人来说是显而易见的,我在这里问。到目前为止唯一有用的网站是这个网站:http://softwareramblings.com/2008/07/regular-expressions-in-c.html但是样本太简单了。我正在使用VisualStudio2010。#include[...]stringseq="Somewords.And...somepunctuation.";regexrgx("\w");smatchresult;regex_search(seq,result,rgx);for(size_ti=0;i预期输出

c++ - 使用带或不带括号的 C 符号

让我们有两行代码:&car->speed&(car->speed)这两行是否等价?在这两种情况下我都能得到speed的地址吗?如果它们是等价的,那么选择什么作为编码约定更好? 最佳答案 Arethesetwolinesequivalent?WillIgetinbothcasesaddresstothespeed?是的。->比一元&具有更高的优先级,因此&car->speed和&(car->speed)是等价的。Iftheyareequivalents,whatisbettertochooseascodingconvention?选择

c++ - 使用简单类型说明符的显式类型转换(功能符号)

移植一些代码我发现了那一行unsignedcharuc=unsignedchar(c);被MSVC接受但被GCC拒绝。这个语法正确吗?标准说Asimple-type-specifier(7.1.7.2)...followedbyaparenthesizedoptionalexpressionlistorbyabraced-init-list(theinitializer)constructsavalueofthespecifiedtypegiventheinitializer是不是意味着MS是对的?unsignedchar是“简单类型说明符”吗? 最佳答案

c++ - 删除 C++-STL/Boost 调试符号(...或不创建它们)

Linux/Gcc/LD-工具链。我想从库和可执行文件中删除STL/Boost调试符号,原因有二:大型程序的链接速度非常慢调试跳转到STL/boost代码,烦人对于1.增量链接将是一个很大的改进,但AFAIKld不支持增量链接。在1999年dr.dobb的期刊中有一个变通方法“伪增量链接”(不再在网络上,而是在archive.org)(这个想法是将所有内容放在动态库中,并将所有更新的目标文件放在第二个动态库中首先加载)但这并不是真正的通用解决方案。对于2.有一个脚本here,但是a)它对我不起作用(它没有删除符号),b)它在管道的末端工作时非常慢,而更早地删除符号会更有效。显然,其他调

c++ - 将 lexical_cast 用于无符号类型时检查负值

我有一种情况,我正在获取命令行参数并使用boost::lexical_cast(my_param).我希望my_param的负值会导致lexical_cast抛出,但它会愉快地转换它们,-1变成18446744073709551615.这看起来很荒谬,因为unsignedlong的最大值是2^32-1,它看起来更像是unsignedlonglong。所以我正在寻找一种更智能的方法来将char*输入转换为unsignedlong,或者一种方法来验证我没有接受伪装成大unsignedlonglong的负值。 最佳答案 有一个错误报告反对

c++ - 具有仅 header 实现的重复符号

这个问题在这里已经有了答案:c++:classdeclarationanddefinitionseparatedinsideheadercausesDuplicateSymbol(2个答案)关闭去年。我有一个在头文件中声明和实现的C++类。我选择这个是因为由于_GLIBCXX_DEBUG和预编译库,人们不能轻易地在调试和发布版本之间移动。例如,如果我定义_GLIBCXX_DEBUG,Boost将由于源文件中的ABI更改而崩溃。仅header的实现产生了重复符号的问题。例如,在下面的类中operator==和非成员swap将产生多个定义的符号。//Foo.hppnamespaceBar{

c++ - 将有符号整数范围映射到无符号

我遇到一个问题,有符号整数应转换为无符号整数,同时保留它们的范围和顺序。给定以下定义:#include#defineMIN(X)std::numeric_limits::min();#defineMAX(X)std::numeric_limits::max();将有符号范围[MIN(T),MAX(T)]映射到无符号范围[0,MAX(U)]的最快和正确方法是什么?强>?哪里:TisasignedintegertypeUisanunsignedintegertypesizeof(T)==sizeof(U)我尝试了各种位旋转和数字方法来提出解决方案,但没有成功。