我有一个使用 gcc 版本 4.6.3 的项目,我被迫使用“-Wall -Werror -Wconversion”进行编译。以下简单示例显示了一个我无法摆脱的错误:
#include <stdint.h>
int main(void) {
uint32_t u = 0;
char c = 1;
u += c;
return (int)u;
}
使用上述标志编译它会给出:
test.c:7:8: error: conversion to ‘uint32_t’ from ‘char’ may change the sign of the result [-Werror=sign-conversion]
好的。只需添加一个类型转换,对吗?没有。将第 7 行更改为u += (uint32_t)c
不会使错误消失。即使将其更改为u = u + (uint32_t)c
也不会使其消失。
有可能解决这个问题吗?
请注意,“char”来自一个字符串,所以我没有选择更改其类型的选项。