0

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

有符号和无符号警告之间的比较

我不只是在类型的变量中做一个castto ,而是认为如下: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很受欢迎。

4

1 回答 1

2

你的例子是有缺陷的:不管你怎么说,size_t在与sizeof. 即没有理由name_size成为int.

作为一般说明,只需对该变量使用“自然”符号。它归结为一个问题:name_size应该是消极的吗?

于 2012-12-07T17:56:43.663 回答