草庐IT

compilation-time

全部标签

c++ - 内联失败 : function body can be overwritten at link time

我今天从我认为具有g++-4.6的Ubuntu12.04升级到具有g++-4.7.2的Ubuntu12.10。在我的代码中,我有几个函数标记为__attribute__((always_inline))。原因很简单,分析向我展示了它显着提高了代码的性能。它在g++4.6上运行良好,但现在在g++4.7上我收到错误消息:error:inliningfailedincalltoalways_inline'voidfunc_name(args)':functionbodycanbeoverwrittenatlinktime我无法分享我的实际代码,我试图缩小范围,但是当我更改太多时,错误就会消

c++ - '/usr/lib/i386-linux-gnu/qt5/bin/lrelease : not found WARNING: TARGET is empty' Error when trying to compile Feathercoin from source

我关注this从源代码安装羽毛币的提示。我已按照所有说明进行操作,直至:qmake'USE_UPNP=-`make这就是我得到以下错误的地方:1:/usr/lib/i386-linux-gnu/qt5/bin/lrelease:notfoundWARNING:TARGETisempty`下面是终端输出:RCC:Errorin'src/qt/bitcoin.qrc':Cannotfindfile'locale/bitcoin_bg.qm'RCC:Errorin'src/qt/bitcoin.qrc':Cannotfindfile'locale/bitcoin_ca_ES.qm'RCC:E

c++ - std::get_time 在 g++ 和 clang++ 中被破坏了吗?

我今天正在处理一些时间函数,并注意到使用%r(或%p)的标准转换似乎不适用于通过的输入g++或clang++上的std::get_time()。见thislivecodeversion对于g++和clang++。它确实在带有VC++的Windows下似乎可以正常工作(参见closelyrelatedquestion)。另请注意,无论是否包含imbue行,效果都是相同的。如果重要的话,我的Linux机器上的语言环境设置为"en_US.UTF-8"。#include#include#include#include#includeintmain(){std::tmt{};std::strin

c++ - 可变参数模板和函数的指针 : what compiler is right?

我找不到更好的标题,但如果您有正确的想法,请随时修改它。事实上,它还是比GCCvsclang好。我试图找出这段代码有什么问题:templatestructS;templatestructS:S{usingS::f;templatevoidf(){}};templatestructS{voidf();};templatestructR:S{usingS::f;templatevoidg(){this->templatef();}};voidh(constdouble&){}intmain(){Rr;r.g();}它可以用GCC4.9编译(参见here),但它不能用clang3.8.0编译

STM32 (基于HAL库)4×4矩阵按键驱动详细教程

STM32矩阵键盘:矩阵的工作原理:矩阵原理图如下:矩阵键盘由16个按键组成,也就是4*4矩阵键盘,按照传统的按键接法,16个按键需要16个单片机io口,按照矩阵键盘接法,16个按键只需要八个io口,我选择了PA口的0~7号引脚,前四个依次接矩阵键盘的行,后四个依次接矩阵键盘的列;矩阵键盘的每一个按键都是接了两个io口,也就是一端必须是输出高电平或者低电平,另一端去检测是否是高电平或者低电平;简单来说,也就是一端配置为GPIO输出,另一端配置为GPIO输入或者外部中断检测。所以只需要配置行线或者列线为输出,则另外一端就配置为中断检测。这个只是为了方便才选择连续的引脚,也可以选择不连续的引脚。下

c++ - target_compile_options() 仅适用于 C++ 文件?

是否可以仅将target_compile_options()用于C++文件?我想将它用于作为其他应用程序依赖项的目标,以便库可以将其编译器标志传播到这些应用程序。但是,如果与C或ObjC文件一起使用,某些标志(例如-std=c++14)会导致构建失败。我读过我应该CXX_FLAGS而不是只将这些标志添加到C++文件中,但这不会(自动)通过cmake的包系统传播。 最佳答案 解决方案您可以使用generatorexpressions来执行此操作:target_compile_options(MyLibPUBLIC$:-std=c++1

c++ - 持久化 std::chrono time_point 实例

持久化std::chronotime_point实例,然后将它们读回另一个相同类型的实例的正确方法是什么?typedefstd::chrono::time_pointtime_point_t;time_point_ttp=std::chrono::high_resolution_clock::now();serializer.write(tp);...time_point_tanother_tp;serializer.read(another_tp);对写入/读取的调用,假设类型time_point_t的实例可以以某种方式转换为字节表示,然后可以写入或读取磁盘或套接字等。Alf建议的可

c++ - 日期/时间转换 : string representation to time_t

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭4年前。Improvethisquestion如何将格式为"MM-DD-YYHH:MM:SS"的日期字符串转换为C或C++中的time_t值? 最佳答案 使用strptime()将时间解析成structtm,然后使用mktime()转换成time_t. 关于c++-日期/时间转换:stringrepresentationtotime_t,我们在Sta

c++ - 使用 Visual Studio Compiler 分析内联 C++ 函数

当编译器内联了很多代码时,如何理解Windows上的C++分析数据?IE。我当然想测量实际运行的代码,所以根据定义,我将测量代码的优化构建。但似乎我尝试的所有工具都没有真正设法解决内联函数。我已经尝试了VisualStudio2017Professional和VTune2018中的采样分析器。我尝试启用/Zo,但似乎没有任何影响。我发现以下资源似乎表明只有VisualStudioUltimate或Premium支持内联框架信息-VisualStudio2017是否仍然如此?https://social.msdn.microsoft.com/Forums/en-US/9df15363-5

c++ - 为什么此代码链接到 Intel Compiler 2015 而不是 Intel Compiler 2018?

我的团队最近从2015年英特尔编译器(并行工作室)升级到2018年版本,我们遇到了一个链接器问题,让每个人都焦头烂额。我有以下类(为简洁起见进行了适度编辑),用于处理子进程的包装以及与它们对话的相关文件描述符:classSubprocWrapper{public:staticconstintPASSTHRU_FD=0;staticconstintMAKE_PIPE=-1;typedefstd::mapEnvMapType;staticEnvMapTypegetMyEnv();SubprocWrapper(intstdin_fd_req,intstdout_fd_req,intstder