草庐IT

arm_const_structs

全部标签

C++:如何处理需要修改的const对象?

我在代码中有个地方曾经说过constmyType&myVar=someMethod();问题在于:someMethod()返回constmyType我以后需要能够更改myVar,方法是在对象处于无效状态时分配默认值。所以我需要使myVar成为非常量。我想我也需要让myVar成为非引用,对吧?例如。myTypemyVar?执行此常量到非常量的C++“正确”方法是什么?静态转换?词汇表?还有别的吗?我可能可以访问boost的词法转换,所以我不介意这个选项,但我更喜欢非boost解决方案,如果它最终不允许我这样做使用提升。谢谢! 最佳答案

c++ - const 强制转换以允许读取锁定,这闻起来难闻吗?

我想在标记为const的对象上执行只读方法,但为了线程安全地执行此操作,我需要锁定读写器互斥体:constValueObject::list()const{ScopedReadlock(children_);...}但这会中断,因为编译器提示“children_”是const等等。我去了ScopedRead类和RWMutex类(children_是一个子类)以允许read_lock在const对象上,但我必须写这个:inlinevoidread_lock()const{pthread_rwlock_rdlock(const_cast(&rwlock_));}我一直了解到const_ca

c++ - 不赞成从字符串 const 进行转换。到 wchar_t*

你好,我有一个泵类,它需要使用一个成员变量,该变量是指向包含端口地址的wchar_t数组的指针,即:“com9”。问题是,当我在构造函数中初始化此变量时,我的编译器会标记折旧转换警告。pump::pump(){this->portNumber=L"com9";}这工作正常,但每次我编译时的警告都很烦人,让我觉得我做错了什么。我尝试创建一个数组,然后像这样设置成员变量:pump::pump(){wchar_tport[]=L"com9";this->portNumber=port;}但出于某种原因,这使我的portNumber指向“F”。显然是我的另一个概念问题。感谢您帮助解决我的菜鸟问

c++ - 如何在 std::string 中存储 const char*?

char*buffer1="abc";constchar*buffer2=(constchar*)buffer;std::stringstr(buffer2);这行得通,但我想声明std::string对象,即str,一次并多次使用它来存储不同的常量字符*。出路在哪里? 最佳答案 您可以重新分配:constchar*buf1="abc";constchar*buf2="def";std::stringstr(buf1);str=buf2;//Callsstr.operator=(constchar*)

c++ - 如果通过模板函数中的 const 引用传递,数组不会衰减为指针

这个问题来自这个:c++passarraytofunctionquestion但由于OP接受了答案,我想现在没有人会阅读它。我在g++上试过这段代码。似乎数组在传递给此函数时不会衰减为指针(该函数返回正确的结果):#includetemplatestd::size_tsize_of_array(Tconst&array){returnsizeof(array)/sizeof(*array);}intmain(){inta[5];std::cout另一个用户(sharptooth)说他在关闭内联的VC++10上有相同的行为。谁能解释一下?谢谢。 最佳答案

ARM一致性总线CMN600AE

1.CMN600AE的介绍        CoreLinkCMN-600CoherentMeshNetwork 是基于Mesh拓扑结构,对外支持AMBACHI/ACE-LITE等接口,内部改用路由结构转发数据,并提供硬件一致性和系统缓存,还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz,另外AE版本增加了车规芯片的安全功能,总线内部采用EDC检查,接口采用的奇校验。CMN-600AE具有以下特点:功能安全合规性:该网络符合功能安全标准,例如ISO26262(汽车电子领域的功能安全标准)或IEC61508(工业自动化领域的功能安全标准)等。高性能:CMN-600AE采用了先进的连通

c++ - 如何从 'char const*' 中删除常量

看起来std::remove_const无法移除constchar*的常量性。考虑以下代码:#include#include#includetemplatestructS{staticvoidfoo(){std::cout::type).name()::foo();}此程序的输出(在VisualStudio2010上):charconst*charconst*在gcc中我们有可读的输出(代码here):PKcPKc我希望在Microsoft编译器的第二行获得char*,在gcc上获得任何(但不同于第一行)。我究竟做错了什么?如何将charconst*转换为char*?

关于ARM的__disable_irq()的效果

/**\briefEnableIRQInterruptsThisfunctionenablesIRQinterruptsbyclearingtheI-bitintheCPSR.CanonlybeexecutedinPrivilegedmodes.*/static__INLINEvoid__enable_irq(){__ASMvolatile("cpsiei");}/**\briefDisableIRQInterruptsThisfunctiondisablesIRQinterruptsbysettingtheI-bitintheCPSR.CanonlybeexecutedinPrivilege

c++ - 链接器错误 - 带有 libboost_thread 的 macOS 上 undefined symbol std::string::c_str() const?

我从homebrew安装了boost1.55.0在macos小牛队上。获取链接器异常-找不到std::string::c_str(),我不明白为什么。这可能是Homebrew软件的问题吗?我尝试直接从boost编译boost1.55.0,它甚至没有在macOS上构建。这段代码:#include#include#include#includetypedefstd::unordered_mapStringMap;staticboost::thread_specific_ptr>rlist;intmain(){return0;}使用此命令行编译:g++-std=c++11main.cpp-I

c++ - 无法在参数传递中将 'const char*' 转换为 'WCHAR*'

我在文档中写道,用户名、IP和密码必须是constchar*,当我将变量放入constchar时,出现此错误消息。这是我的代码:#include#include#include#includeusingnamespacestd;typedefint(__cdecl*MYPROC)(LPWSTR);intmain(){HINSTANCEhinstDLL;MYPROCProcAdd;hinstDLL=LoadLibrary("LmServerAPI.dll");if(hinstDLL!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstDLL,"LmSer