小编Vla*_*tov的帖子

编译时断言以确定指针是否为数组

目前,我有以下代码块来进行安全字符串复制(它的工作原理):

#define STRCPY(dst, src) do { assert(((void*)(dst)) == ((void*) & (dst))); \
                              strlcpy(dst, src, sizeof(dst)); } while (0)
Run Code Online (Sandbox Code Playgroud)

所以它接受如下构造:

const char *src = "hello";
char dest[5];
STRCPY(dest, src); //hell
Run Code Online (Sandbox Code Playgroud)

并否认以下内容:

void (char *dst) {
    STRCPY(dst, "heaven"); //unknown size of dst
}
Run Code Online (Sandbox Code Playgroud)

问题是代码块会产生一个断言.有没有办法在编译时执行此检查?

所以我想在编译时遇到错误(比如创建一个负大小的数组),而不是在可能的情况下崩溃代码.

c assertion

4
推荐指数
1
解决办法
116
查看次数

标签 统计

assertion ×1

c ×1