C:warning: null argument where non-null required (argument 2) [-Wnonnull]

main.c:950:32: warning: null argument where non-null required (argument 2) [-Wnonnull]

这个意思说,函数定义里面由一个attribute,标记第二个参数不能为空。

warning.c:25:2: warning: null argument where non-null required (argument 2) [-Wnonnull]

memcmp(&xia, 0, 0);

比如这个memcmp的第一个和第二个参数;

glibc的定义(string.h)如下:

c 复制代码
/* Compare N bytes of S1 and S2.  */
extern int memcmp (const void *__s1, const void *__s2, size_t __n)
     __THROW __attribute_pure__ __nonnull ((1, 2));

为什么要加这个属性?根据源代码看的话,就是在第三个参数不为0的情况下,如果s1和s2有一个是null,那么就会发生SegV。注意是给开发者一个提示,避免问题的发生。

c 复制代码
commit be27d08c05911a658949ba7b84f4321a65a2dbf4 (tag: cvs/fedora-glibc-20040923T0148)
Author: Ulrich Drepper <[email protected]>
Date:   Wed Sep 22 08:20:57 2004 +0000
    Update.
    2004-09-22  Ulrich Drepper  <[email protected]>
            * string/string.h: Add __nonnull annotations.
            * stdlib/stdlib.h: Likewise.
相关推荐
CodeWithMe2 小时前
【C/C++】不同防止头文件重复包含的措施
c语言·开发语言·c++
whoarethenext2 小时前
使用 C/C++的OpenCV 实现模板匹配:从基础到优化
c语言·c++·opencv
合方圆~小文3 小时前
架空线路图像视频监测装置
c语言·c++·人工智能·嵌入式硬件·硬件工程·模拟退火算法
卖猪肉的痴汉4 小时前
4.2 C/C++开发环境:VSCode+CMake+MSYS2
c语言·c++·vscode
ღ 噫吁嚱4 小时前
【C/C++】实现固定地址函数调用
c语言·开发语言·c++
jinmo_C++5 小时前
第十四届蓝桥杯_省赛B组(C).冶炼金属
c语言·职场和发展·蓝桥杯
代码雕刻家8 小时前
7.4.分块查找
c语言·数据结构·算法
打倒焦虑9 小时前
C语言学习20250610
c语言
摩天崖FuJunWANG10 小时前
c语言中的hashmap
java·c语言·哈希算法
字节高级特工10 小时前
【Linux篇】细品环境变量与地址空间
linux·运维·服务器·c语言·c++·ubuntu·centos