解决已签名和未签名警告之间的比较的解决方案

时间:2012-12-07 17:54:34

标签: c gcc casting warnings type-conversion

我正在寻找C编程语言的解决方案来删除此警告:

  

签名和未签名警告之间的比较

我在cast类型的变量中执行unsignedint,而不是只考虑以下内容:

#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名称的建议也很受欢迎。

1 个答案:

答案 0 :(得分:2)

你的例子存在缺陷:不过你说的是,在与size_t的结果进行比较时,你应该始终使用sizeof。即我没有理由将name_size变成int

总的来说,只需使用" natural"该变量的签名。归结为一个问题:name_size应该是负面的吗?