标签: compiler-warnings

如何在GCC中隐藏"已定义但未使用"的警告?

我有一堆编译时断言,例如:

CASSERT(isTrue) or CASSERT2(isTrue, prefix_)
Run Code Online (Sandbox Code Playgroud)

在使用GCC进行编译时,我会收到很多警告'prefix_LineNumber' defined but not used.有没有办法可以隐藏编译时断言的警告?我没有运气搜索GCC文档.我以为我可能会在同一个宏中全局自动使用var,但我想不出有任何办法.

有谁知道在GCC中隐藏警告的方法?

gcc warnings compiler-warnings

60
推荐指数
7
解决办法
8万
查看次数

如何消除歧义警告?

我有这个警告:

警告3方法'Microsoft.Office.Interop.Word._Application.Quit(ref object,ref object,ref object)'和非方法'Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit'之间的歧义.使用方法组.

在我的线上

wordApplication.Quit();
Run Code Online (Sandbox Code Playgroud)

我试过替换它:

wordApplication.Quit(false); // don't save changes
Run Code Online (Sandbox Code Playgroud)

wordApplication.Quit(false, null, null); // no save, no format
Run Code Online (Sandbox Code Playgroud)

但它一直给我这个警告.这不是一个大问题,因为代码完美编译并按预期运行,但我想摆脱警告.我能做什么?

c# warnings visual-studio-2010 office-interop compiler-warnings

54
推荐指数
1
解决办法
2万
查看次数

不必要的@SuppressWarnings("未使用")

@SuppressWarnings在eclipse中为代码获取了注释的编译器警告:

@Override
public boolean doSomething(@SuppressWarnings("unused") String whatever) throws AnException {
    throw new AnException("I'm still in bed and can't do anything until I've had a shower!");
}
Run Code Online (Sandbox Code Playgroud)

在"未使用"一词下看起来像一个黄色的波浪线,在鼠标悬停时,我得到了工具提示Unnecessary @SuppressWarnings("unused").

我认为另一个开发人员被提示通过eclipse输入这些注释,我基本上被提示将它们删除.我如何配置eclipse以提示我将@SuppressWarnings注释放入而不是抱怨它?

如果有人想在这里评论最佳实践,那么这也是最受欢迎的.

java eclipse annotations compiler-warnings suppress-warnings

54
推荐指数
4
解决办法
8万
查看次数

如何在与Knowntype属性一起使用的类上使用Obsolete属性时忽略编译器警告

因此,我们尝试弃用一些现有的类,并开始使用ObsoleteAttribute将它们标记为过时,以便它们将停止使用.使用具有使用Obsolete属性标记的类型的KnownType属性并导致编译器警告的事实是预期的.但是,在我们的项目中,我们将警告视为错误,因此忽略警告不是一种选择.是否有编译器指令来抑制此警告?

以下用法会导致编译器警告:

///ProductTemplateDataSet is marked with the Obsolete attribute
[KnownType(typeof(ProductTemplateDataSet))]
public class EntityCollectionBase : System.Data.DataSet
{

}
Run Code Online (Sandbox Code Playgroud)

编辑:我理解使用编译器指令来忽略错误,但是这个编译器警告没有数字.

.net c# attributes compiler-warnings

53
推荐指数
3
解决办法
4万
查看次数

C++强制编译时错误/警告在交换机中隐式掉落

switch 语句可能非常有用,但会导致程序员忘记break语句的常见错误:

switch(val) {
    case 0:
        foo();
        break;
    case 1:
        bar();
        // oops
    case 2:
        baz();
        break;
    default:
        roomba();
}
Run Code Online (Sandbox Code Playgroud)

你不会明显得到警告,因为有时明确需要通过.良好的编码风格建议在你的堕落是故意的时候发表评论,但有时这是不够的.

我很确定这个问题的答案是否定的,但是:如果你case不这样做,那么当前(或将来会提出)是否能够让编译器抛出错误(或者至少是警告!)至少有一种break;或某种效果// fallthru?使用switch语句有一个防御性编程选项会很好.

c++ compiler-warnings switch-statement

53
推荐指数
3
解决办法
1万
查看次数

如何让Intellij Idea显示编译警告?

我用的IntelliJ IDEA 10和Java JDK 6更新7工作当我运行Build --> Rebuild Project命令和文件(javac)编译器会产生警告,理念不显示什么这些警告究竟是在Messages视图.我只看到一个"信息:XX警告"节点,但无法扩展它以查看实际警告.或者我只是在状态栏上看到"编译已成功完成XX警告"消息.对于错误,Idea会自动显示错误信息(错误消息,文件名,行号等).如何让它与警告类似地工作?

(为了记录,我已经尝试过使用其他命令行参数-Xlint,但它没有什么区别.)

javac intellij-idea compiler-warnings

51
推荐指数
1
解决办法
4万
查看次数

如何抑制有关弃用api的javac警告?

当我编译时,javac输出:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.`
Run Code Online (Sandbox Code Playgroud)

我希望压制这个警告.尝试-Xlint:none似乎没有帮助.

java javac compiler-warnings

50
推荐指数
5
解决办法
8万
查看次数

GCC可以不抱怨未定义的引用吗?

在什么情况下,GCC 在尝试调用伪造函数时不会抛出"未定义的引用"链接错误消息?

例如,GCC编译和链接此C代码的情况:

void function()
{
    made_up_function_name();
    return;
}
Run Code Online (Sandbox Code Playgroud)

...即使代码中made_up_function_name没有任何地方(不是标题,源文件,声明或任何第三方库).

GCC是否可以在某些条件下接受和编译这种代码,而无需触及实际代码?如果是这样,哪个?

谢谢.

编辑:之前没有任何声明或提及made_up_function_name.这意味着grep -R整个文件系统中的一个显示完整的单行代码.

c gcc compiler-errors compiler-warnings

49
推荐指数
1
解决办法
3万
查看次数

避免警告'未参考的正式参数'

我有一个像这样的超级课:

class Parent
{
public:
    virtual void Function(int param);
};

void Parent::Function(int param)
{
    std::cout << param << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

..和这样的子类:

class Child : public Parent
{
public:
    void Function(int param);
};

void Child::Function(int param)
{
    ;//Do nothing
}
Run Code Online (Sandbox Code Playgroud)

当我编译子类.cpp文件时,我收到此错误

warning C4100: 'param' : unreferenced formal parameter
Run Code Online (Sandbox Code Playgroud)

作为一种惯例,我们曾经将警告视为错误.如何避免上述警告?

谢谢.

c++ compiler-warnings suppress-warnings

47
推荐指数
6
解决办法
6万
查看次数

忽视gcc/clang的"-Wmissing-braces"警告是明智的吗?

考虑以下程序:

#include <array>

int main()
{
  std::array<int, 1> x = { 0 }; // warning!
  x = { { 0 } }; // no warning
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

第一次初始化导致gcc 4.7.2上的警告......

main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable]
Run Code Online (Sandbox Code Playgroud)

......和铿锵3.1

main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
  std::array<int, 1> x = { 0 };
Run Code Online (Sandbox Code Playgroud)

就标准而言,双花键或单花括号之间应该没有区别,至少在这个例子中.

有两种方法可以处理警告:

  1. 把它关掉
  2. 修复代码,编译器很高兴

你有什么建议?恕我直言,双卷曲表达看起来有些难看.另一方面,警告可能会在更复杂的示例中检测到实际问题.你知道这个警告对你有帮助的例子吗?

c++ compiler-warnings c++11

47
推荐指数
3
解决办法
2万
查看次数