草庐IT

arm_const_structs

全部标签

c++ - 将 C++ 变量声明为 const 是有助于还是损害性能?

我了解const限定数据类型的行为。不过,我很好奇,如果过度或不够热心地将限定变量作为const,是否会带来任何性能增益或损失。我特别考虑在隔离代码块中声明和使用的变量。例如,像这样的东西:constqrealpadding=CalculatePadding();constQSizeFpage_size=CalculatePagePreviewSize(padding);constQRectFcontent_rect=CalculatePagePreviewContentRect(page_size);constQListpages=renderer.BuildPrintPages(p

c++ - 在函数内声明 const 而不是变量有什么好处吗?

如果我有一个只存在很短时间的函数,将颜色列表设为常数会有什么不同吗?stringgetrandcolor(){conststringcolors[5]={"red","blue","green","yellow","purple"};returncolors[rand()%5];}注意:实际的颜色列表包含数百种颜色,而不仅仅是我展示的小样本,不确定这是否会有所不同。 最佳答案 它可以防止您不小心覆盖您不想更改的变量。“糟糕!”-保护可能是const最重要的功能。假设一个编译器可以通过知道一个变量不应该改变来预测某种优化,但我的测试从

c++ - 为struct动态分配内存

我正在上C++类(class),并且有一项作业要求我为结构动态分配内存。我不记得在类里面讨论过这个,我们只是在继续上课之前简单地接触过new运算符。现在我必须“动态分配一个学生,然后提示用户输入学生的名字、姓氏和A-number(身份证号)。”我的结构是这样写的structStudent{stringfirstName,lastName,aNumber;doubleGPA;};我试过Studentstudent1=newStudent;但这不起作用,我不确定如何使用结构动态执行此操作。 最佳答案 将您的定义更改为structStud

c++ - boost::program_options 卡在 ARM 上 "sometimes"

目前我正在使用boost::program_options来解析BeagleBoard(基于ARM的处理器)上的配置文件。我的程序是多线程的,并链接到boost1.45multithreaded库。虽然我的程序在解析配置文件时似乎挂起namespacepo=boost::program_options;po::options_descriptiondesc("Options");uint32_toption1=0;std::vectoroptionsString;std::cout(&option1),"...")("finaloption",po::value>(&optionsSt

c++ - 通过 ARM NEON 汇编最大优化元素乘法

我正在为双Cortex-A9处理器优化两个一维数组的逐元素乘法。主板上运行的是Linux,我使用的是GCC4.5.2编译器。所以下面是我的C++内联汇编函数。src1、src2和dst是16字节对齐的。更新:可测试代码:voidMultiply(constfloat*__restrict__src1,constfloat*__restrict__src2,float*__restrict__dst,constunsignedintwidth,constunsignedintheight){intloopBound=(width*height)/4;asmvolatile(".loop:

c++ - 为什么 64 位 GCC 在分配数组时警告将 const int 转换为 long unsigned int?

我有一个如下所示的文件test.cpp:voidf(constintn){unsignedchar*a=newunsignedchar[n];delete[]a;}intmain(){f(4);return0;}使用-Wsign-conversion在64位GCC中编译它标志产生警告:test.cpp:2:39:warning:conversionto‘longunsignedint’from‘constint’maychangethesignoftheresult[-Wsign-conversion](第2行是调用new的行)。我觉得GCC应该发出关于分配数组的警告似乎很奇怪,但下面

具有用户类型的 C++20 模板 <auto> 导致 GCC 9 中的 T/const T 类型不匹配

我正在尝试将非类型模板与自定义类型结合使用。structT{};templatestructU{};templatevoidf(U){}intmain(){constexprTt;f(U{});//OKf(U{});//OKf(U{});//Error}模板参数推导失败,gcctrunkwith-std=c++2agetsyop.cpp:10:5:note:templateargumentdeduction/substitutionfailed:yop.cpp:19:21:note:mismatchedtypes‘T’and‘constT’19|f(U{});//Error|^我是不是

c++ - 如何使用 LLVM 在 Windows 上为 ARM 编译 C++ 程序?

目标仅使用LLVM在Windows上为ARM编译C++程序。为什么LLVM因为许可许可。我开始怀疑我对LLVM的理解是否正确。在主机上做使用clang(前端)生成中间表示。此表示与目标无关。使用llc(后端)生成目标汇编代码。使用lld-link.exe生成可执行文件。然后在目标机器上执行。主机Windows10,64位目标机用armcortex-a57驱动PX程序intmain(intargc,char*argv[]){intx=41;x++;returnx;}我已经检查并编译了LLVM(使用VisualStudio2015,发布版本,CPU=x64)我的尝试clang.exe-ta

c++ - 为什么我不能将 const 左值引用绑定(bind)到返回 T&& 的函数?

我将一个函数的一些返回值绑定(bind)到一个const左值引用,但是在const左值引用的生命周期结束之前,该对象被删除了。在下面的示例中,Foo对象在foo的生命周期结束之前被销毁:#include#includestructFoo{~Foo(){std::cout输出是:Foodestroyed:somestringbeforescopeend在coliru上直播:1我认为您可以将constT&绑定(bind)到任何东西。返回T&&是不好的做法吗?应该首选按值返回吗?我在这里的cpprestsdk中偶然发现了这个:inlineutility::string_t&&to_strin

c++ - 为什么 push_back 签名是 void push_back (const value_type& val) 而不是 void push_back (value_type val)?

这个问题在这里已经有了答案:Passingbyvaluevsconst&and&&overloads(3个答案)关闭8年前。为什么push_back的函数签名如下?voidpush_back(constvalue_type&val);传递的值被复制到容器中,为什么不直接复制到参数列表中呢?voidpush_back(value_typeval);