compiler-warnings相关内容
有谁知道任何警告,C ++编译器提供帮助强制const正确性?例如,有一个警告产生的任何C ++方法,包含一个非const参数,从来没有在方法内部修改是很好。我看到有一个gnu编译器警告称为-Wsuggest-attribute = const;然而,当我使用这个标志我得到一个错误,说它不被识别。任何想法为什么? 解决方案 我不认为这样的警告存在,主要是因为它是无用的。只是因为参数没有在调
..
这是警告吗?我已经读过,它可以导致不稳定的行为? 这是一个例子,我想编译,有人可以解释为什么作者声明的对象作为一个类但后来typedef它的结构?如果类是 POD ,这样做是否是正常的? 感谢。 解决方案 与另一个(一个说“类”,另一个说“结构”)矛盾。给定一个定义规则,除了至多一个声明,所有声明必须是前向声明。警告通常指示类型的前向声明是错误的,并且通常是简单的拼写错误,并且
..
以下是无意义的,但用 g ++ -Wall -Wextra -Werror -Winit-self (我测试了GCC 4.7.2和4.9.0) p> #include #include int main() { for(int ii = 0; ii { const std ::字符串& str = str; // !! std
..
我参与了一个在Qt中编写的软件项目,并在Linux上用qmake和gcc构建。我们必须链接到质量相当低的第三方图书馆,并发出大量的警告。我想在我们的源代码中使用-W -Wall,但是通过-w到讨厌的第三方库,以保持控制台没有噪声和杂乱,所以我们可以专注于我们的代码质量。 在qmake中,有没有办法有条件地添加CFLAGS / CXXFLAGS到某些文件和库? 解决方案 p> Jonat
..
我正在开发一个大型的协作C ++项目,它是开发和运行在各种风格的Linux,OS X和Windows。我们使用GCC,Visual Studio C ++和Intel C ++编译器在这些平台上编译。随着越来越多的人开始为项目开发代码,我们开始在编译和运行时看到特定的编译器在特定操作系统上的奇怪的错误。一个例子是隐含包含某些操作系统/编译器对似乎找到的头,意外地从派生类中的基类重载一个函数。
..
switch 语句可以是超级有用的,但会导致一个常见的错误,程序员忘记了一个break语句: switch(val){ case 0: foo(); break; case 1: bar(); // oops case 2: baz(); break; 默认值: roomba(); } 明显地, 。良好的编码风格建议,当你的下降是故意的,
..
有没有人知道一个gcc / g ++选项,如果有一个函数具有非void返回值但在其定义中不包含return语句,则会产生错误/警告? 例如: int add(int a,int b) { a + b; } 非常感谢! 解决方案 -Wreturn-type 。它由 -Wall (您应该始终使用,以及 -Werror -Wextra )启用。 p>
..
请考虑以下程序: #include -Weffc ++ 将吐出: 警告:'struct S '有指针
..
我有我的软件的v1和v2版本。 v1使用注册表保存设置,很多调用GetProfileInt等。v2现在使用sqlite数据库来保存设置。 我们目前正在开发两个分支,将新功能从v1合并到v2分支。我们目前必须记住更新任何注册表调用使用新的配置数据库,这已经错过了几次。 我想要的是抛出一个编译错误如果在v2中使用了任何GetProfile ...或WriteProfile ...函数。
..
-Wshadow 会“当局部变量影射另一个局部变量时发出警告”。 。在Visual C ++(2008)有一个等价物?我尝试/ W4但它没有拾起它。我也尝试过 Cppcheck ,但也没有看到它。 例如如果我不经意地做: class A { private: int memberVar; public: void fn() { int memberVar = 27;
..
在Visual Studio 2010 SP1上编译openFrameworks 007项目时,我有以下警告: d:\pedro\\ \\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(127):警告C4003:宏'max'的实际参数不足 d:\pedro\development\\ \\ v
..
这个问题不限于任何特定的编译器警告,以下只是一个例子。 目前当我想要一个循环检查退出条件: / p> while(true){ doSomething(); if(condition()){ break; } doSomethingElse(); } 我不能只写在Visual C ++中 - 它会发出一个C4127 条件表达式是常量警告。编译器会在我的脸
..
我要编译以下文件(temp.cpp): #include
..
我最近将多项目解决方案转换为每个项目使用.dlls而不是.libs。然而,我现在得到一个链接器警告每个项目,如示例中所述。 MSDN没有服务到这一切都有帮助。 警告2警告LNK4075:忽略 '/ EDITANDCONTINUE'由于' OPT:ICF' 规格LudoCamera.obj 解决方案 编辑并继续“支持或优化。通常,您在调试版本上进行“编辑并继续”,并对版本版本进行优
..
为什么这段代码在Code :: block中成功运行。 IDB只是报告 警告:“引用本地变量'tmp'返回”, 但输出结果“hello world”成功。 #include #include using namespace std; const string& getString(const string& s) { s
..
我知道 unsigned int 不能保存负值。但下面的代码编译没有任何错误/警告。 unsigned int a = -10; 当我打印变量 时,如果无符号变量不能容纳带符号的值,为什么编译器允许他们编译而不给出任何错误/警告? 任何想法? 编辑 编译器:VC ++编译器 strong>解决方案 需要使用警告级别
..
lint产生一些警告,如: foo.c XXX警告534:忽略函数bar的返回值$ b 从lint 手动 534忽略函数的返回值 'Symbol'(与位置比较)A 返回一个值的函数是 只是为副作用调用,对于 示例,在一个语句中自己或 逗号 运算符的左侧。 Try:(void)function();到 调用一个函数并忽略它的返回 的值。另请参阅
..
在开始使用一些VS2005生成的MFC代码时,我注意到它覆盖了一个类似这样的方法: void OnDraw(CDC * / * pDC * /) { ... // TODO:在此处添加您的代码 } 当然,一旦我添加了一些东西,我意识到我需要取消注释pDC形式参数为了编译,但我很困惑如何/为什么C ++函数可以编译(没有警告),当形式参数只有一个类型而不是一个名称:
..
我有这样的超类: class Parent { public: virtual void Function(int param); }; void Parent :: Function(int param) { std :: cout
..
我在我的类中的一个方法中使用枚举的完全限定名。但我得到编译器警告,说:“警告C4482:非标准扩展使用:枚举'Foo'使用在限定名”。在C ++中,我们需要使用枚举而没有限定名称吗?但国际海事组织,看起来丑陋。 有任何想法吗? 解决方案 一个新的“命名空间”,枚举中的值直接在周围范围中可用。所以你得到: 枚举示例{ SAMPLE_ONE = 1, SAMPLE_TWO =
..