相关疑难解决方法(0)

如何安全地从int转换为size_t?

在GCC中将int赋值给size_t(或在malloc中使用它)会产生以下警告:

警告:从'int'转换为'size_t'可能会更改结果的符号[-Wsign-conversion]

为了解决这个问题,我想将转换包装在一个函数中,该函数首先检查转换是否有效,然后进行转换.

这是我到目前为止:

/* Convert int src to size_t dst. */
/* Assumes dst points to valid size_t address. */
int safe_size_t_from_int(size_t *dst, int src) {
    if(src < 0) return SAFE_ERROR_NEGATIVE;
    if(SIZE_MAX < INT_MAX) {
        if(src > (int)SIZE_MAX) return SAFE_ERROR_OVERFLOW;
    }
    *dst = (size_t)src;
    return SAFE_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?是否存在已安装转换的库?

我能找到的最接近的东西是Microsoft Intsafe.h,但它似乎只适用于Win32类型.

编辑修改按照chux'评论.

c casting type-conversion

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

casting ×1

type-conversion ×1