我正在寻找C编程语言的解决方案来删除此警告:
签名和未签名警告之间的比较
我在cast
类型的变量中执行unsigned
到int
,而不是只考虑以下内容:
#if MAX_NAME >= INT_MAX
size_t name_size = 0;
#define INT_TYPE size_t
#else
int name_size = 0;
#define INT_TYPE int
#endif
然后:
if(.. && name_size++ >= (INT_TYPE)sizeof(name)) {
//..
}
你如何解决?
此外,对宏INT_TYPE
名称的建议也很受欢迎。
答案 0 :(得分:2)
你的例子存在缺陷:不过你说的是,在与size_t
的结果进行比较时,你应该始终使用sizeof
。即我没有理由将name_size
变成int
。
总的来说,只需使用" natural"该变量的签名。归结为一个问题:name_size
应该是负面的吗?