gcc-warning相关内容

将二维数组传递给常量参数的函数

我从C Primer Plus 中了解到,如果您想保护数组不被函数意外修改,您应该在指针声明之前添加 const 修饰符函数定义的头部. 遵循这个明智的建议,在下面的最小示例中,我试图将一个非常量二维数组 array 传递给函数 Sum2D,一个参数其中是一个pointer-to-const-int[2]. #include #define 行 2#define COLS 2int Sum ..
发布时间:2021-11-18 01:55:47 其他开发

将container_of宏应用于嵌入式char数组时报告警告

当我将 container_of 宏应用于包含char数组的C结构时,我得到警告:从不兼容的指针类型进行初始化. 以下是代码: #define container_of(ptr,type,member)({\const typeof((((type *)0)-> member)* __ mptr =(ptr);\(type *)((char *)__ mptr-offsetof(type ..
发布时间:2021-05-31 19:30:05 其他开发

GCC不再实现< varargs.h>.

我必须将此代码片段从varargs.h更改为stdarg.h,但我不知道确切如何: #ifndef皮棉int ll_log(va_alist)va_dcl{int事件,结果;LLog * lp;va_list ap;va_start(ap);lp = va_arg(ap,LLog *);event = va_arg(ap,int);结果= _ll_log(lp,event,ap);va_end ..
发布时间:2021-05-09 20:58:29 其他开发

为什么要使用"-flto"静默GCC的警告“字符串截断"

我了解到,较新的GCC版本引入了针对可能错误的字符串操作"stringop-truncation"的警告 这是我可以轻松触发此警告的示例代码: $ cat strncpy-warning.cxx#includeextern char g_buf [16];无效的mycopy(const char * src_c_str){strncpy(g_buf,src_c_str ..
发布时间:2021-05-09 20:30:40 其他开发

如何禁用没有命令行开关的gcc警告?

我收到以下警告: 警告:"X"已初始化并声明为"extern" 它看起来没什么大不了,我可以将其禁用.在我的情况下,更改代码并不是一个好主意,因为我无法控制代码,只需要编译即可.所以我想禁用警告. 如果它旁边有一个 -WSomeDefect 键,则可以使用 -Wno-SomeDefect 命令行开关,但此警告似乎没有明显的开关 如何禁用此类警告? 解决方案 有关所提出问题 ..
发布时间:2021-04-23 19:27:30 其他开发

如何获得算术中被遗忘的警告?

考虑这种情况: uint64_t add(uint32_t a,uint32_t b){返回a + b;//程序员忽略了(uint64_t)a + b.} 我们如何让GCC(或任何其他编译器)的C或C ++前端警告这种情况:正在以立即扩大的狭窄类型进行操作? 我已经阅读了当前的GCC文档,并尝试了各种警告,例如 -Wconversion ,但是什么也没有. 解决方案 我不知道 ..
发布时间:2021-04-19 20:05:10 其他开发

gcc size_t和sizeof算术转换为int

我决定在启用-Wsign-conversion的情况下测试编译项目,以查看会出现什么警告,并且遇到gcc的行为与clang不同的错误消息.有人可以告诉我哪个是正确的吗? 我有一个采用size_t参数的函数: void func(size_t) {} 其他一些结构 struct Test {}; 和调用代码 int i = some_initialiser(); fu ..
发布时间:2020-11-27 05:22:21 其他开发

如何查询C ++的GCC警告?

GCC允许使用以下语法查询特定于C ++语言的可用警告标志: g++ -Q --help=warning,c++ 将警告标志添加到呼叫中会将其包括在结果中: g++ -Wall -Q --help=warning,c++ 但是,似乎是从C的角度完成调用的,而从C ++的角度来看我不知道该怎么做.如果调用包含仅C ++的警告,例如: g++ -Wnon-virtual-dt ..
发布时间:2020-11-12 23:50:03 其他开发

GCC发出警告,指出指针类型不兼容

当我使用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的完 ..
发布时间:2020-11-12 23:49:14 其他开发

TensorFlow不使用调试模式构建

我们正在尝试构建带有调试标志的TensorFlow测试用例: bazel build -c dbg //tensorflow/python/kernel_tests:sparse_matmul_op_test 但是构建失败并出现以下错误: /usr/include/features.h:330:4:错误:#warning _FORTIFY_SOURCE 需要进行优化(-O)编译[ ..
发布时间:2020-11-12 23:44:55 其他开发

使用sys/socket.h宏时的神秘类型转换警告

我正在尝试使用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 ..
发布时间:2020-11-12 22:54:39 其他开发

禁止编译器警告函数声明从未引用

所以我有一些像这样的代码: void foo (int, int); void bar ( ) { //Do Stuff #if (IMPORTANT == 1) foo (1, 2); #endif } 在没有“重要"的情况下进行编译时,我得到了一个编译器警告foo已定义且从未被引用.这让我开始思考(这就是问题所在). 因此,要解决此问题, ..
发布时间:2020-11-12 22:42:58 其他开发

为什么GCC不会警告无法访问的代码?

我想知道为什么 gcc(4.6.3)在此示例中没有警告我无法访问的代码: #include int status(void) { static int first_time = 1; if (first_time) { return 1; first_time = 0; /* never reached */ ..
发布时间:2020-11-12 22:31:31 其他开发

如何抑制“未使用的参数"?警告在C?

例如: Bool NullFunc(const struct timespec *when, const char *who) { return TRUE; } 在C ++中,我可以在参数周围添加/*...*/注释.但是,当然不是在C中,它会给我错误error: parameter name omitted. 解决方案 我通常会这样写一个宏: #define UNUS ..
发布时间:2020-11-12 22:24:32 其他开发