我正在寻找 C 编程语言的解决方案来删除此警告:
Comparison between signed and unsigned warning
我不只是在int
类型的变量中将cast
转换为unsigned
,而是想如下:
#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
名称的建议也受到赞赏。
最佳答案
您的示例有缺陷:无论您如何放置,在与 sizeof
的结果进行比较时,您都应该始终使用 size_t
。 IE。没有理由将 name_size
转换为 int
。
作为一般说明,只需使用该变量的“自然”符号即可。这归结为一个问题:name_size
是否应该为负数?
关于c - 修复签名和未签名警告之间比较的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13768433/