我用C编写了一个库,现在将用于嵌入式处理器板.我需要减少内存占用量,因此将一些函数的返回类型从int更改为char(仅用于标记错误).
更改返回类型但不更改返回的变量不会产生警告.有没有办法在gcc中设置它,因为我想确保我已经捕获了所有实例.
char processSomething (SomeType *something)
{
int result = 0;
...
do stuff
...
return result; /* no warning */
}
Run Code Online (Sandbox Code Playgroud)
谢谢
6月19日:我添加了-Wconversion,它突出了一些有趣的东西.这有两个问题.我的一个函数我采用两个字符的十六进制字符串并使用转换为十进制
char十进制;
decimal = hexstring [0] - '0' << 4 + hexstring [1] - '0'; // for 0 to 9
Run Code Online (Sandbox Code Playgroud)
它抱怨从int转换为char,而我可以收集的是' - ','+'和'<<'运算符似乎都隐式转换为int.这是正确的还是我解释错误的警告.或者有更好的方法来做到这一点?
另外,当将strtol用于int时(抱怨'long int'到'int')但是我可以保证即使是short int也不会超过这个值,对于类型转换是否安全?因为它将截断长的额外(并希望零字节)?或者这取决于字节顺序?
谢谢