gcc-warning相关内容
我了解到,较新的GCC版本引入了针对可能错误的字符串操作"stringop-truncation"的警告 这是我可以轻松触发此警告的示例代码: $ cat strncpy-warning.cxx#includeextern char g_buf [16];无效的mycopy(const char * src_c_str){strncpy(g_buf,src_c_str
..
我收到以下警告: 警告:"X"已初始化并声明为"extern" 它看起来没什么大不了,我可以将其禁用.在我的情况下,更改代码并不是一个好主意,因为我无法控制代码,只需要编译即可.所以我想禁用警告. 如果它旁边有一个 -WSomeDefect 键,则可以使用 -Wno-SomeDefect 命令行开关,但此警告似乎没有明显的开关 如何禁用此类警告? 解决方案 有关所提出问题
..
在以下代码中: #includeint main(){const long l = 4294967296;int i = l;返回我//只是使编译器静音} 编译器警告有关隐式转换(使用-Wall和-std = c ++ 14),如下所示: 警告:从'const long'到'int'的隐式转换将值从4294967296更改为0 [-Wconstant-convers
..
考虑这种情况: uint64_t add(uint32_t a,uint32_t b){返回a + b;//程序员忽略了(uint64_t)a + b.} 我们如何让GCC(或任何其他编译器)的C或C ++前端警告这种情况:正在以立即扩大的狭窄类型进行操作? 我已经阅读了当前的GCC文档,并尝试了各种警告,例如 -Wconversion ,但是什么也没有. 解决方案 我不知道
..
我决定在启用-Wsign-conversion的情况下测试编译项目,以查看会出现什么警告,并且遇到gcc的行为与clang不同的错误消息.有人可以告诉我哪个是正确的吗? 我有一个采用size_t参数的函数: void func(size_t) {} 其他一些结构 struct Test {}; 和调用代码 int i = some_initialiser(); fu
..
GCC允许使用以下语法查询特定于C ++语言的可用警告标志: g++ -Q --help=warning,c++ 将警告标志添加到呼叫中会将其包括在结果中: g++ -Wall -Q --help=warning,c++ 但是,似乎是从C的角度完成调用的,而从C ++的角度来看我不知道该怎么做.如果调用包含仅C ++的警告,例如: g++ -Wnon-virtual-dt
..
当我使用GCC 4.9.2编译以下程序时,收到以下警告:从不兼容的指针类型传递"P"的参数1 .但是,我看不到程序有什么问题.有任何线索吗? typedef int Row[10]; void P(const Row A[]) { } int main(void) { Row A[10]; P(A); return 0; } 这是从GCC到stderr的完
..
我们正在尝试构建带有调试标志的TensorFlow测试用例: bazel build -c dbg //tensorflow/python/kernel_tests:sparse_matmul_op_test 但是构建失败并出现以下错误: /usr/include/features.h:330:4:错误:#warning _FORTIFY_SOURCE 需要进行优化(-O)编译[
..
测试ENV Linux 英特尔x86-64 GCC 8.2.1 已启用标志:-Wextra -Wall -Wfloat-equal -Wundef -Wshadow -Winit-self -Wpointer-arith -Wcast-align -Wstrict-prototypes -Wstrict-overflow=5 -Wwrite-strings -Waggregate-ret
..
我目前正在尝试制作自己的shell,它必须是多语言的. 因此,我尝试实现一个读取.txt文件中的行的功能. #include #include #include // globals char lang[16] = {'t','r','y'}; char aMsg[512]; // functions void takeF
..
我正在尝试使用GCC 9.1(iso9899:1999)和GNU make 4.2解决基于Solaris 11 64位的C代码中的转换警告,而我遇到了这一警告: warning: unsigned conversion from ‘int’ to ‘long unsigned int’ changes value from ‘-8’ to ‘18446744073709551608’ [-W
..
我想知道为什么 gcc(4.6.3)在此示例中没有警告我无法访问的代码: #include int status(void) { static int first_time = 1; if (first_time) { return 1; first_time = 0; /* never reached */
..
例如: Bool NullFunc(const struct timespec *when, const char *who) { return TRUE; } 在C ++中,我可以在参数周围添加/*...*/注释.但是,当然不是在C中,它会给我错误error: parameter name omitted. 解决方案 我通常会这样写一个宏: #define UNUS
..
使用pFUnit(3.2.9)测试我的Fortran代码时,我收到许多“非法预处理器指令"警告,例如 Warning: Illegal preprocessor directive /path/to/my/file/test.f90:37:2: #line 26 "/path/to/my/file/test.f90" 1 代码可以编译并正常运行,因此我想关闭这些警告,同时仍然看到
..
在 -Wno-四个字符常量上找不到任何文档,但是我怀疑它与 -Wno-multichar类似。我是正确的吗? 解决方案 它们是相关的但不是同一件事。 使用 -Wall --pedantic 标志进行编译,分配: int i ='abc'; 产生: 警告:多字符常量[-Wmultichar] 同时具有GCC和CLANG,而:
..
我试图理解在C函数声明中使用“ static”关键字作为数组索引的方法。 在阅读这篇文章,我试图声明这样的功能,并有目的地向其传递太短的数组: #include #include void print_string10(char string10 [static 10]){ //如果参数为NULL或少于10个元素的数组,
..
较新版本的gcc提供了 Wimplicit-fallthrough ,对于大多数switch语句来说,这都是很棒的。但是,我有一个switch语句,我想允许所有案例陈述中的掉线。 是否有一种方法可以进行掉线?我希望避免为此文件使用 Wno-implicit-fallthrough 进行编译。 编辑:我我正在寻找一种方法来明确掉线(如果可能的话),而不是通过编译器开关或编译指示关闭警告。
..
我得到: 警告:假设(X + c) m_PositionIndex [in] m_EndIndex [in]) b m_PositionIndex 和 m_EndIndex 类型为 itk的$ p $: :索引( http://www.itk.org/Doxyge
..
使用少于元素数量的初始化程序初始化数组(在C ++中,但是任何适用于C的解决方案也可能在这里工作)完全合法: int数组[10] = {1,2,3}; 但是,这可能是晦涩的bug的来源。有没有办法让编译器(gcc)检查一个特定数组的初始化程序数量,并在声明且实际大小不匹配时发出警告甚至错误? 我知道我可以使用 int array [] = {1,2,3}; 然后
..
我在 .cpp s和 .hpp #pragma一次 / code> s,因此我会为每个使用它的文件发出警告。我没有找到任何禁用此类警告的选项,只有 #ifndef MY_FILE_H #define MY_FILE_H /*...*/ #endif 的东西。 所以您会建议我用 ifndef 替换每个 #pragma一次 s? 标题中: #define MYFILE_H //
..