我有一堆编译时断言,例如:
CASSERT(isTrue) or CASSERT2(isTrue, prefix_)
Run Code Online (Sandbox Code Playgroud)
在使用GCC进行编译时,我会收到很多警告'prefix_LineNumber' defined but not used.有没有办法可以隐藏编译时断言的警告?我没有运气搜索GCC文档.我以为我可能会在同一个宏中全局自动使用var,但我想不出有任何办法.
有谁知道在GCC中隐藏警告的方法?
我有这个警告:
警告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
我@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
因此,我们尝试弃用一些现有的类,并开始使用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)
编辑:我理解使用编译器指令来忽略错误,但是这个编译器警告没有数字.
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语句有一个防御性编程选项会很好.
我用的IntelliJ IDEA 10和Java JDK 6更新7工作当我运行Build --> Rebuild Project命令和文件(javac)编译器会产生警告,理念不显示什么这些警告究竟是在Messages视图.我只看到一个"信息:XX警告"节点,但无法扩展它以查看实际警告.或者我只是在状态栏上看到"编译已成功完成XX警告"消息.对于错误,Idea会自动显示错误信息(错误消息,文件名,行号等).如何让它与警告类似地工作?
(为了记录,我已经尝试过使用其他命令行参数-Xlint,但它没有什么区别.)
当我编译时,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似乎没有帮助.
在什么情况下,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整个文件系统中的一个只显示完整的单行代码.
我有一个像这样的超级课:
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)
作为一种惯例,我们曾经将警告视为错误.如何避免上述警告?
谢谢.
考虑以下程序:
#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)
就标准而言,双花键或单花括号之间应该没有区别,至少在这个例子中.
有两种方法可以处理警告:
你有什么建议?恕我直言,双卷曲表达看起来有些难看.另一方面,警告可能会在更复杂的示例中检测到实际问题.你知道这个警告对你有帮助的例子吗?