标签: compiler-warnings

g ++ -Wreorder有什么意义?

g ++ -Wall选项包括-Wreorder.该选项的作用如下所述.我不清楚为什么有人会关心(特别是在-Wall中默认打开它).

-Wreorder (C++ only)
  Warn when the order of member initializers given in the code does not
  match the order in which they must be executed.  For instance:

    struct A {
      int i;
      int j;
      A(): j (0), i (1) { }
    };

  The compiler will rearrange the member initializers for i and j to
  match the declaration order of the members, emit-ting a warning to that
  effect.  This warning is enabled by -Wall.

c++ g++ compiler-warnings

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

ReSharper/C#中的"委托减法有不可预测的结果"?

使用myDelegate -= eventHandlerReSharper(版本6)时出现问题:

委托减法具有不可预测的结果

JetBrains在这里解释了这背后的理性.这个解释很有意义,在阅读之后,我怀疑我-对代表的所有用处.

那么如何,

  • 我可以写一个非自动事件而不会让ReSharper脾气暴躁吗?
  • 或者,是否有更好和/或"正确"的方式来实现这一点?
  • 或者,我可以忽略ReSharper吗?

这是简化的代码:

public delegate void MyHandler (object sender);

MyHandler _myEvent;

public event MyHandler MyEvent
{
    add
    {
        _myEvent += value;
        DoSomethingElse();
    }
    remove
    {
        _myEvent -= value; // <-- ReSharper warning here
    }
}
Run Code Online (Sandbox Code Playgroud)

c# resharper events delegates compiler-warnings

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

自定义编译器警告

在.Net中使用ObsoleteAtribute时,它会为您提供编译器警告,告诉您对象/方法/属性已过时,应该使用其他东西.我目前正在开发一个需要大量重构前雇员代码的项目.我想编写一个自定义属性,我可以用它来标记将生成编译器警告的方法或属性,这些警告会给出我写的消息.像这样的东西

[MyAttribute("This code sux and should be looked at")]
public void DoEverything()
{
}
Run Code Online (Sandbox Code Playgroud)
<MyAttribute("This code sux and should be looked at")>
Public Sub DoEverything()
End Sub
Run Code Online (Sandbox Code Playgroud)

我想要生成一个编译器警告,上面写着"这段代码sux,应该看一下".我知道如何创建自定义属性,问题是我如何使它在visual studio中生成编译器警告.

.net c# vb.net attributes compiler-warnings

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

Java Class.cast()与强制转换运算符

在我的C++时代被教授关于C风格演员的邪恶,我很高兴首先发现在Java 5中java.lang.Class已经获得了一种cast方法.

我认为最后我们有一个处理铸造的OO方式.

结果Class.caststatic_castC++不同.它更像是reinterpret_cast.它不会在预期的位置生成编译错误,而是会延迟到运行时.这是一个简单的测试用例,用于演示不同的行为.

package test;

import static org.junit.Assert.assertTrue;

import org.junit.Test;


public class TestCast
{
    static final class Foo
    {
    }

    static class Bar
    {
    }

    static final class BarSubclass
        extends Bar
    {
    }

    @Test
    public void test ( )
    {
        final Foo foo = new Foo( );
        final Bar bar = new Bar( );
        final BarSubclass bar_subclass = new BarSubclass( );

        {
            final Bar bar_ref = bar;
        }

        { …
Run Code Online (Sandbox Code Playgroud)

java generics casting compiler-warnings

104
推荐指数
5
解决办法
16万
查看次数

如何在Objective-C中检测未使用的方法和#import

在iPhone应用程序上工作了很长时间后,我意识到我的代码非常脏,包含几个#import和方法,这些方法根本没有被调用或有用.

我想知道是否有任何编译器指令或方法来检测那些无用的代码行.Xcode有没有任何工具可以检测到这个?

methods xcode objective-c compiler-warnings

98
推荐指数
5
解决办法
4万
查看次数

如何摆脱Xcode中的"未使用的变量"警告?

我完全理解为什么会出现未使用的变量警告.我不想一般地压制它们,因为它们在大多数情况下非常有用.但是,请考虑以下(人为)代码.

NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Run Code Online (Sandbox Code Playgroud)

Xcode报告这saved是一个未使用的变量,当然它不是.我怀疑这是因为NSAssert1是一个宏.该NS_BLOCK_ASSERTIONS是宏没有定义,那么目标C断言肯定启用.

虽然它没有伤害任何东西,但我发现它不整洁且烦人,我想压制它,但我不知道该怎么做.将变量分配给自己可以摆脱编译器警告,但如果存在这样的事情,我宁愿以"正确"的方式进行.

xcode objective-c compiler-warnings unused-variables

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

覆盖单个文件的编译标志

我想使用一组全局标志来编译项目,这意味着在我指定的顶级CMakeLists.txt文件中:

ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x )
Run Code Online (Sandbox Code Playgroud)

但是,对于一个子目录中的特定文件(假设为"foo.cpp"),我想将编译标志切换为不应用-Weffc ++(包含的商业库我无法更改).为了简化只使用-Wall的情况,我试过:

 SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall )
 ADD_EXECUTABLE( foo foo.cpp )
Run Code Online (Sandbox Code Playgroud)

,这没用.我也试过了

SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
Run Code Online (Sandbox Code Playgroud)

ADD_EXECUTABLE( foo foo.cpp )
SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall )
Run Code Online (Sandbox Code Playgroud)

,其中既没有奏效.

最后,我尝试删除这个定义:

REMOVE_DEFINITIONS( -Weffc++ )
ADD_EXECUTABLE( foo foo.cpp )
ADD_DEFINITIONS( -Weffc++ )
Run Code Online (Sandbox Code Playgroud)

,这也没有用(意思是,我得到了很多关于商业图书馆的风格警告).(**注意:如果在构建可执行文件后不重新包含-Weffc ++指令,则会禁止警告.)

我也试过暂时删除编译标志:http: //www.cmake.org/pipermail/cmake/2007-June/014614.html ,但这没有帮助.

对此没有优雅的解决方案吗?

c++ cmake compiler-warnings

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

如何在Visual Studio中摆脱"[某些事件]从未使用过"编译器警告?

例如,我收到此编译器警告,

永远不会使用"Company.SomeControl.SearchClick"事件.

但是我知道它被使用是因为评论它会引发我20个新的XAML页面警告,试图使用这个事件!

是什么赋予了?有没有办法摆脱这个警告?

.net c# wpf events compiler-warnings

84
推荐指数
4
解决办法
2万
查看次数

如何编译没有警告被视为错误?

问题是在Windows上编译好的相同代码无法在Ubuntu上编译.每次我收到此错误:

cc1: warnings being treated as errors
Run Code Online (Sandbox Code Playgroud)

现在,这是一个很大的代码库,我不喜欢修复所有的警告.

尽管有警告,我还能以任何方式成功编译吗?

c gcc compiler-warnings

84
推荐指数
5
解决办法
15万
查看次数

Visual Studio警告级别含义?

在Web应用程序项目的构建选项卡上,我有一个名为"警告级别"的设置.我可以设置0到4之间的值.这些值是什么意思?值0会更严格并产生更多警告,反之亦然?我还没有找到任何关于它的文件,但也许我在找错了地方.

c# warnings compiler-warnings visual-studio

83
推荐指数
4
解决办法
5万
查看次数