Questions tagged «compiler-warnings»

编译器发出的消息,指示代码或配置中的潜在问题。


4
什么是“ android:allowBackup”?
由于新的ADT预览版(版本21) ,他们有一个新的皮棉警告,告诉我在清单文件,接下来的事情(在应用程序标签): 应该将android:allowBackup显式设置为true或false(默认情况下为true,这可能会对应用程序的数据产生一些安全隐患) 他们在官方网站上写道: 进行了两项新检查:必须明确确定您的应用是否允许备份以及标签检查。有一个用于设置库路径的新命令行标志。编辑时对增量皮棉分析的许多改进。 这是什么警告?什么是备份功能,如何使用? 另外,为什么警告告诉我它具有安全隐患?禁用此功能有哪些不利和好处? 清单备份有两个概念: “机器人:allowBackup ”允许备份和通过ADB恢复,如图所示在这里: 是否允许应用程序参与备份和还原基础结构。如果将此属性设置为false,则即使通过全系统备份也不会执行应用程序的备份或还原,否则将导致所有应用程序数据通过adb保存。此属性的默认值为true。 这被认为是安全问题,因为人们可以通过ADB备份您的应用程序,然后将您应用程序的私有数据存储到他们的PC中。 但是,我认为这不是问题,因为大多数用户不知道什么是adb,如果这样做,他们也将知道如何对设备进行root操作。仅当设备启用了调试功能时,ADB功能才起作用,并且需要用户启用它。 因此,只有将其设备连接到PC并启用调试功能的用户才会受到影响。如果他们的PC上有使用ADB工具的恶意应用程序,则可能会出现问题,因为该应用程序可以读取私有存储数据。 我认为Google应该只在开发人员类别中添加默认情况下禁用的功能,以允许通过ADB备份和还原应用程序。 “ android:backupAgent ”允许使用云的备份和还原功能,如此处和此处所示: 实现应用程序的备份代理的类的名称,它是BackupAgent的子类。该属性值应该是完全限定的类名称(例如“ com.example.project.MyBackupAgent”)。但是,作为简写形式,如果名称的第一个字符是句点(例如,“。MyBackupAgent”),则会将其附加到元素中指定的包名称中。没有默认值。必须指定名称。 这不是安全问题。


4
如何在Rust中禁用未使用的代码警告?
struct SemanticDirection; fn main() {} warning: struct is never used: `SemanticDirection` --> src/main.rs:1:1 | 1 | struct SemanticDirection; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(dead_code)] on by default 在发生任何严重的问题时,我都会再次打开这些警告,但是我只是在修补这种语言,这使我感到很不快。 我尝试将#[allow(dead_code)]代码添加到我的代码,但这没有用。

9
如何为几行代码禁用GCC警告
在Visual C ++中,可以使用#pragma warning (disable: ...)。我也发现在GCC中,您可以覆盖每个文件编译器的标志。我该如何针对“下一行”或使用GCC在代码区域周围使用push / pop语义呢?


7
如何打开(字面上)所有GCC警告?
我真的要启用GCC的所有警告。(您会认为这很容易...) 您-Wall可能认为可以解决问题,但不能!还需要-Wextra。 您-Wextra可能认为可以解决问题,但不能!并非所有此处列出的警告(例如-Wshadow)都已启用。而且我仍然不知道这个清单是否全面。 我如何告诉GCC启用(如果不是,则不是,否则为!)所有警告?

11
财产获取者和安置者
通过这个简单的类,我得到了编译器警告 尝试x在自己的设置器/ 获取器中修改/访问 当我这样使用它时: var p: point = Point() p.x = 12 我得到一个EXC_BAD_ACCESS。没有明确的支持,我该怎么办? class Point { var x: Int { set { x = newValue * 2 //Error } get { return x / 2 //Error } } // ... }

4
Objective-C隐式转换将整数精度'NSUInteger'(aka'unsigned long')转换为'int'警告
我正在做一些练习,并收到警告,指出: 隐式转换将失去整数精度:将'NSUInteger'(aka'unsigned long')转换为'int' #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSArray *myColors; int i; int count; myColors = @[@"Red", @"Green", @"Blue", @"Yellow"]; count = myColors.count; // <<< issue warning here for (i = 0; i < count; i++) NSLog (@"Element %i = %@", i, …

7
i =(i,++ i,1)+1; 做?
阅读有关未定义行为和序列点的答案后,我编写了一个小程序: #include <stdio.h> int main(void) { int i = 5; i = (i, ++i, 1) + 1; printf("%d\n", i); return 0; } 输出为2。哦,天哪,我没有看到减价!这是怎么回事 另外,在编译上面的代码时,我得到一条警告: px.c:5:8:警告:逗号表达式的左侧操作数无效 [-Wunused-value] i = (i, ++i, 1) + 1; ^ 为什么?但是可能我的第一个问题的答案会自动回答。

5
g ++ -Wreorder有什么意义?
g ++ -Wall选项包括-Wreorder。下面介绍此选项的作用。对我来说,为什么有人会关心(尤其是默认在-Wall中将其打开)并不明显。 -Wreorder(仅C ++) 当代码中给定的成员初始化程序的顺序不正确时发出警告 匹配必须执行的顺序。例如: 结构A { 我 int j; A():j(0),i(1){} }; 编译器将重新排列i和j的成员初始化器。 匹配成员的声明顺序,对此发出警告 影响。该警告由-Wall启用。

3
ReSharper / C#中的“代理减法具有不可预测的结果”?
使用myDelegate -= eventHandlerReSharper(版本6)问题时: 委托减法具有不可预测的结果 JetBrains在此解释了背后的原因。该解释是合理的,并且在阅读之后,我怀疑我对-on委托的所有使用。 那么如何, 我可以编写一个非自动事件而不会使ReSharper脾气暴躁吗? 或者,是否有更好和/或“正确”的方法来实现这一目标? 或者,我可以忽略ReSharper吗? 这是简化的代码: public delegate void MyHandler (object sender); MyHandler _myEvent; public event MyHandler MyEvent { add { _myEvent += value; DoSomethingElse(); } remove { _myEvent -= value; // <-- ReSharper warning here } }

10
自定义编译器警告
在.Net中使用ObsoleteAtribute时,它会向您提供编译器警告,告知您对象/方法/属性已过时,应使用其他方法。我目前正在从事一个需要大量重构前员工代码的项目。我想编写一个可用于标记方法或属性的自定义属性,该方法或属性将生成编译器警告,这些警告或警告将给出我编写的消息。像这样 [MyAttribute("This code sux and should be looked at")] public void DoEverything() { } <MyAttribute("This code sux and should be looked at")> Public Sub DoEverything() End Sub 我希望它生成一个编译器警告,指出“此代码为sux,应予以注意”。我知道如何创建自定义属性,问题是如何使它在Visual Studio中生成编译器警告。

3
覆盖单个文件的编译标志
我想使用一组全局标志来编译项目,这意味着在我的顶级CMakeLists.txt文件中,我指定了: ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x ) 但是,对于子目录中的特定文件(例如“ foo.cpp”),我想将编译标志切换为不应用-Weffc ++(包括我无法更改的商业库)。为了简化仅使用-Wall的情况,我尝试: SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) ,这没有用。我也试过 SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) 和 ADD_EXECUTABLE( foo foo.cpp ) SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall ) ,但两者都不起作用。 最后,我尝试删除此定义: REMOVE_DEFINITIONS( -Weffc++ ) ADD_EXECUTABLE( …

8
Java Class.cast()与强制转换运算符
在我的C ++时代里,学习过C风格的强制转换运算符的弊端后,我最初很高兴地发现Java 5中java.lang.Class已经获得了一种cast方法。 我以为最终我们有了一种面向对象的处理铸造的方法。 事实证明Class.cast与static_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( ); …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.