草庐IT

WARNINGS

全部标签

c++ - 如果 switch case 失败,我如何让 MSVC 发出警告或失败?

如果我的一个switch语句有一个不中断的情况,我想得到一个警告/错误。这可能吗?switch(i){case1:cout在goingnative2012session上讨论了类似的Clang功能,但我需要它用于MSVC2013http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys理想情况下,当两个连续的主体没有被中断分开时,我会想要一个警告,这样上面的例子就会失败,但这不会:switch(i){case1:cout

c++ - ld 的奇怪警告

我从ld收到了这个警告当我构建我的程序时:ld:warning:directaccessinglobalconstructorskeyedto_ZN12_GLOBAL__N_143ensure_log_is_created_before_maing_l_filterEtoglobalweaksymbolvtableforcs::ObjectFactoryAliasInstantiationmeanstheweaksymbolcannotbeoverriddenatruntime.Thiswaslikelycausedbydifferenttranslationunitsbeingcom

c++ - 为什么 Visual Studio 不在 self 赋值时发出警告 (int foo = foo;)

我在重构一个出现了无数次的术语时不小心产生了如下代码中的情况:#include"stdafx.h"#includeintfoo=foo;//Byreplacingwiththefollowinginstructionwecausesacompileerror//intfoo(foo);int_tmain(intargc,_TCHAR*argv[]){intbar=bar;std::cout对于不同的调试和发布配置,编译器对intfoo=foo;保持沉默。我看不出这种说法不是等待发生的错误。VisualStudio编译器不应该发出警告吗?我并不是假装这是未定义的行为。我的意思是,默认情况

c++ - 如何忽略 [默认启用] 的特定 gcc 警告?

我有以下程序将绿色文本打印到终端:#include#include//returnsacoloredstringforterminaloutputstreamsstd::stringcolorize_forground(std::stringconst&message,intconst&background){returnstd::string("\e[38;5;"+std::to_string(background)+"m"+message+"\x1b[0m");}intmain(){std::cout但是,当我用下面的警告标志编译程序时,g++-std=c++1y-pedantic

c++ - VS2013 : How to disable warnings for included header files outside of the project

在我的项目中,我包含了一个由外部库提供的头文件。使用/W3,所有内容都可以在没有警告的情况下编译。但是,我希望我的项目能够使用/W4进行干净地编译。这对我的代码来说没有问题,但外部header会发出大量警告。我知道我可以做这样的事情:#pragmawarning(push)#pragmawarning(disable:####)//includehere#pragmawarning(pop)但是有一长串要禁用的警告。有没有一种方法可以在包含此header时将警告级别设置回/W3,同时仍使用/W4编译我的其余代码?谢谢! 最佳答案 #

c++ - VC++ 警告 C4356 : static data member cannot be initialized via derived class

以下代码发出此警告,但它似乎工作正常,因为A::st和B::st都已初始化并且实际上代表相同的字符串。据我了解,这是格式错误的代码,不应编译(我检查了clang)。我想知道为什么VC++不发出错误而是发出警告?#include#includeclassA{public:staticconststd::stringst;};classB:publicA{};conststd::stringB::st="abcd";//warningC4356:'A::st':staticdatamembercannotbeinitializedviaderivedclassintmain(){std::

c++ - 警告 LNK4099 : PDB 'vc80.pdb' was not found after switching to vista

在从我的旧XP移动到新的vistaPC后,我在VS2005中的一个旧项目中收到以下几个警告:UnitTest++.vsnet2005.lib(TestRunner.obj):警告LNK4099:PDB'vc80.pdb'wasnotfoundwith'c:\projects\blah.lib'orat'c:\projects\blah\debug\vc80.pdb';链接对象就好像没有调试信息一样我知道可以忽略此警告,但我不喜欢警告。这些警告都与我静态链接到的第三方库(UnitTest++)有关。我看不出这与vista有什么关系,但是两台PC在构建后的相同位置都有相同数量的vc80.p

c++ - 禁用/W4 boost 警告

如何禁用来自boost库的所有MSVC警告?我知道我可以在它们出现的地方禁用特定的警告等...但是它使我的代码困惑,如果我使用boost宏,那么它们似乎不起作用。我想有一个简单的方法来告诉我的编译器不要给我有关boost的警告。这可能吗?另一方面,令我感到惊讶的是,boost库并未在内部禁用所有这些警告,以便我们的用户可以“开箱即用”地使用它。 最佳答案 他们非常努力地避免警告,但是一些编译器会警告形式上正确的代码,只是有点“可疑”。如果您更改代码以使警告静音,则另一个编译器可能会针对该代码发出警告!Boost代码和各种编译器都有警

c++ - G++ 警告 : narrowing conversion of

我正在尝试从sourceforge编译hosts3d,它确实编译但生成了几个缩小错误。我不知道如何解决这个问题,但我们将不胜感激任何帮助。我怀疑我可以下载以前版本的编译器,我可能最终会这样做,但现在……c++11g++-Wall-O2-c-osrc/glwin.osrc/glwin.cppsrc/glwin.cpp:成员函数中'intMyGLWin::AddInput(int,int,unsignedint,int,constchar*,bool)':src/glwin.cpp:983:147:warning:narrowingconversionof'max'from'int'to'

c++ - 当有符号/无符号不匹配时会发生什么转换?

当编译器发现有符号/无符号不匹配时,它会采取什么措施?有符号数是否转换为无符号数,反之亦然?为什么? 最佳答案 如果操作数是整数且有一个无符号值,则转换为无符号。例如:-1>(unsignedint)1//as-1willbeconvertedto2^nbits-1转换int->unsignedint为:n>=0->n;nn(mod2^nbits),例如-1变为2^nbits-1转换unsignedint->int是:nn;n>INT_MAX->实现定义Ifthedestinationtypeisunsigned,theresult