草庐IT

last_attempt_warning

全部标签

c++ - g++ 编译器 : optimization flag adds warning message

我注意到g++编译器的这个有趣的行为,如果我向编译器添加一个-O3标志,我会得到otsu.cpp:220:warning:‘x’maybeuseduninitializedinthisfunction但是,当我不使用优化而是使用调试标志-g时,我根本没有收到任何警告。现在,当-g标志打开时,我更信任编译器;但是,我想知道这是否是应该预期的明确定义的行为?为清楚起见,导致此问题的代码大致如下:intx;//uninitializedgetAValueForX(&x);//functionmakesuseofx,//butxisunitialized在哪里voidgetAValueForX

c++ - 为什么我在这个简单的代码中得到 "ld: warning: direct access in _main to global weak symbol"?

这个问题在这里已经有了答案:xcodewithboost:linker(Id)Warningaboutvisibilitysettings(6个答案)关闭5年前。在我的Clang编译器中这是非常奇怪的行为。我使用Xcode(OSX),所有都是最新的。为什么我会在那个简单的代码中收到此警告?如果我删除这两行,警告就会隐藏。ld:warning:directaccessin_maintoglobalweaksymbolstd::__1::char_traits::eq(char,char)meanstheweaksymbolcannotbeoverriddenatruntime.Thisw

c++ - constexpr 静态模板函数 : g++ error is a warning on clang

考虑以下片段:#includetemplateconstexprintf(){returnI*f();}templateconstexprintf(){return1;}intmain(){std::cout();return0;}这段代码可以很好地与g++和clang编译。非常好。现在将static添加到模板函数特化中:templateconstexprstaticintf(){return1;}然后g++6.1响应错误:11:error:explicittemplatespecializationcannothaveastorageclass还有clang3.8:11:error:

c++ - pragma warning(push, 0) 不禁用/墙警告?

我记得这个技巧在过去的某个时候有用,但现在似乎不起作用了。在#include语句周围放置#pragmawarning(push,0)实际上并不能阻止/Wall从这些语句中生成警告包含文件。将/Wall更改为/W4解决了这个问题,但使用/Wall似乎被打破了。#pragmawarning(push,0)#include#pragmawarning(pop)intmain(){std::cout构建输出:MicrosoftVisualStudioCommunity2017版本15.5.3完整的命令行开关(从cmake生成):/GS/TP/analyze-/Wall/Zc:wchar_t/G

c++ - 'Attempting to upgrade input file specified using deprecated transformation parameters' 是什么意思?

我目前正在尝试使用Caffe训练我的第一个网络。我得到以下输出:caffetrain--solver=first_net_solver.prototxtI051509:01:06.57771015331caffe.cpp:117]UseCPU.I051509:01:06.57801415331caffe.cpp:121]StartingOptimizationI051509:01:06.57809715331solver.cpp:32]Initializingsolverfromparameters:test_iter:1test_interval:1base_lr:0.01displ

c++ - 如何在 valgrind 中跟踪/捕获 "Warning: invalid file descriptor -1 in syscall close"

valgrind显示以下内容:==13880==Warning:invalidfiledescriptor-1insyscallclose()是否有一种简单的方法来调查此错误?我的意思是-例如显示堆栈跟踪?这是一个巨大的项目,我无法手动检查每个关闭。另外,我想这对于每个系统调用错误的文件描述符都是一样的。我运行它是这样的:valgrind--trace-children=yes--track-fds=yes--log-fd=2--error-limit=no\--leak-check=full--show-possibly-lost=yes--track-origins=yes\--s

c++ - “Warning: comparison is always true”

带有-Wextra的GCC(4.7.2)发出以下警告/错误信号(我启用了-Werror):Comparisonisalwaystrueduetolimitedrangeofdatatype[-Wtype-limits]对于以下代码[tryonline]:template(std::numeric_limits::max())structvalidator{staticconstexprboolvalidate(Tvalue){returnstatic_cast(value)structvalidator{staticconstexprboolvalidate(T){returntrue

c++ - "Warning: corrupt .drectve at end of def file"是什么意思?

这个问题在这里已经有了答案:Warning:corrupt.drectveatendofdeffile(3个答案)关闭去年。在这个环境下,我编译了一个c++/openGL的例子贴在网上:Windows7代码::Blocksv13.12MinGW构建于2013年10月(不确定版本)mingw32-g++v4.8.1来自codeincodeblock.com的代码:#defineGLEW_STATIC//third-partylibraries#include#include#include#include#include#include#includeGLuintgVAO=0;GLuin

c++ - 如何防止将 `#warning` 消息视为错误?

我正在尝试在现有代码库中编译引入-Werror标志。我遇到的问题之一是在某些地方#warning用于显示信息性消息。这些不应被视为错误。一个解决方案是使用#pragmamessage代替,但这似乎不受旧版本gcc的支持。(我们的构建服务器使用gcc4.1.2)。谁能帮我解决这个问题? 最佳答案 在gcc-4.6及以上版本中,可以使用-Wno-error=cpp。至少在Lion及以后发布的clang中,您可以使用-Wno-error=#warnings。但是由于您的构建服务器使用古老的gcc,您可能在那里运气不好。通常,传递-fdia

c++ - 错误 C2280 : 'std::thread::thread(const std::thread &)' : attempting to reference a deleted function

我在尝试创建使用C++11标准线程的VC++静态库时遇到问题。我目前有两个类,我可以在我的起始类(最后声明的)上声明并稍后定义一个线程。在这个阶段,代码只是一个套接字监听器,然后创建另一个类的对象来处理每个接受的客户端。这些子对象应该创建并行数据捕获、编码和传输所需的线程。问题是:如果我在我的其他类上声明了一个std::thread,即使我在我的起始类上所做的完全一样,无论如何,我在构建errorC2280时遇到这个错误:'std::thread::thread(conststd::thread&)':试图引用已删除的函数[...]\vc\include\functional11241