- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 Linux 上安装了英特尔编译器 composer_xe_2013_sp1.3.174。我对 icc 警告感到困惑。用一个简单的程序 main.c 喂 icc,如下所示:
int main(int argc, char **argv) {
int a = 1;
unsigned int b = -22;
if (b = a) {
}
}
我使用以下命令编译文件:icc -Wall main.c
。令人惊讶的是,该命令在没有任何警告的情况下静默运行。我必须打开 icc 上的警告开关吗?谢谢
最佳答案
Intel 编译器并没有像 gcc 那样有很好的警告预设(至少在 Linux 上是这样)。主要的警告选项是-wn
,其中n可以是0到5。默认是1,4&5在Linux上没有意义。它还支持一些 gcc 选项,如 -Wall
和 -Wextra
。然而:
-Wall
与 gcc 相比非常简约,如您所见-w2
和 -w3
启用一些有用的诊断,但也有很多垃圾评论-diag-disable:remark
删除了垃圾邮件,但也删除了很多有用的诊断信息最后 -w3 -diag-disable:remark
是 icc 拥有的最好的预设,但它仍然比 gcc -Wall
更简约。相反,您需要从最少的一组警告开始并建立自己的警告,或者从最多的诊断开始并使用 -wd
禁用任何烦人的警告。
第一种方法的主要缺点是英特尔并没有真正记录其大部分警告,因此很难知道可以启用哪些内容。但是,它确实支持许多 GCC 命令行标志,因此 GCC 文档是一个很好的起点。例如,这里有一些相对接近于 g++ -Wall
的设置,如果你想用其中一个进行开发并很有可能用另一个进行干净构建,这很方便:
icpc -Wall -Warray-bounds -Wchar-subscripts -Wcomment -Wenum-compare -Wformat -Wuninitialized -Wmaybe-uninitialized -Wmain -Wnarrowing -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type -Wsign-compare -Wsequence-point -Wtrigraphs -Wunused-function -Wunused-but-set-variable -Wunused-variable -Wwrite-strings
这与 gcc -Wall
不完全匹配。 GCC 和 ICC 对上述警告的实现存在差异。我也找不到与这些 GCC 警告匹配的 ICC 选项:
-Wformat-contains-nul
-Wunused-label
-Wstrict-overflow
-Wvolatile-register-var
我有意将这些排除在外,因为 ICC 版本比 GCC 垃圾邮件多得多:
-Wstrict-aliasing So broad that any use of polymophism will cause this warning
-Wswitch Requires a default even if you have cases for all enumeration values
如果 GCC 奇偶校验不是问题,那么了解 ICC 有哪些警告的最简单方法是启用它们,然后决定您是否喜欢它们。如果您不喜欢警告,您可以使用它的诊断编号禁用它,这通常比 GCC 的选项具有更多的粒度。
icpc -w3 -wd1418,2259
以下是我过去看到的一些被禁用的诊断:
但我鼓励您从所有这些开始,只减少对您的代码库有问题的那些。
关于c++ - 如何打开 icc/icpc 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343360/
我正在尝试编译以下代码: #include int main() { std::map test; return 0; } 使用以下命令: icpc -I /usr/include/x86_
我正在尝试用 C++ 编译一段代码,它使用了过度对齐的变量。如果我尝试编译以下代码(MWE) #include #include int main() { alignas(32) doub
我在练ACM ICPC 历代题http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble
昨天我们在PC上进行了练习^2,它是比赛的官方裁判软件,但我遇到了问题,我的问题代码是正确的,答案也是正确的,但当我将其发送到软件时它回答我“运行时错误”。 我认为我的问题在输入文件中,他们想要来自输
一个相当基本的问题,但我在这里有点迷路。我正在开发一个处理复数的库。到目前为止,我在 Mac OS 10.8 和 Ubuntu 10.04 下使用了我的实现(通过在 Man 上使用 llvm-gcc,
我正在尝试编译#includes 库的代码 在代码中我有以下几行: int main() { clock_t begin = clock(); random_device rd;
我有以下测试代码: // friendfunction.h
我在 Linux 上安装了英特尔编译器 composer_xe_2013_sp1.3.174。我对 icc 警告感到困惑。用一个简单的程序 main.c 喂 icc,如下所示: int main(in
我在以下 $HOME/tpl/intel 安装了 intel 编译器。当我编译启用了 openMP 的简单 hello_omp.cpp #include #include int main ()
我在我的大学领导一小群开发人员,我想解决前几年的几个 ICPC 问题集。 在 Google 上搜索不会产生有用的结果,只会出现一页页的损坏链接和私有(private) .edu 域。 有谁知道在哪里可
我正在尝试使用具有 c++11 功能的 icpc,但是我需要一个 c++11 stdlib,intel 没有提供。 我在 RHEL 6 上以用户身份运行,因此系统 libstdc++ 已过时。安装了较
有许多在线判断网站可以通过将其输出与正确答案进行比较来验证您的程序。此外,他们还会检查运行时间和内存使用情况,以确保您的程序没有超过最大限制。 那么问题来了,有些在线评委网站同时运行多个测试程序,他们
出于好奇,我查看了 2009 年 ACM 国际大学生程序设计竞赛的问题集。这些问题很有趣。它们可在 http://cm.baylor.edu/resources/pdf/2009Problems.pd
我已经坐了将近一个星期了。 Here是 PDF 格式的问题。 到目前为止我只能想到一个想法,但它失败了。这个想法是递归地创建所有在 O(num_of_connected_subgraphs) 中工作的
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我使用的是 Ubuntu 14.04 & eclipse & intel 编译器 v 15 我有 2 个相同的程序(使用 cilk 命令)(一个作为 c 程序,另一个作为 cpp 程序)。 我可以用
玩具代码非常简单: #include #include #define A 10 #define SIZE (int)(ceil(A / 2)) // needs computation but
这个问题是 ACM ICPC 坎普尔地区淘汰赛中提出的问题的子问题: 给定由二维点界定的 2 条线段 (Pa, Pb)和 (Pc, Pd)分别找到p和 q (在 [0,1] 范围内)最小化函数 f(p
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!