gpt4 book ai didi

c - 不同返回类型的 gcc 警告

转载 作者:太空狗 更新时间:2023-10-29 17:20:32 26 4
gpt4 key购买 nike

我用 C 编写了一个库,现在将用于嵌入式处理器板。我需要减少内存占用,所以我打算将某些函数的返回类型从 int 更改为 char(仅用于标记错误)。

更改返回类型但不更改返回的变量不会产生警告。有什么方法可以在 gcc 中设置它,因为我想确保我已经捕获了所有实例。

char processSomething (SomeType *something)
{
int result = 0;
...
do stuff
...

return result; /* no warning */
}

谢谢

6 月 19 日:我添加了 -Wconversion,它突出显示了一些有趣的事情。有两个问题。我的函数之一是使用两个字符的十六进制字符串并使用

转换为十进制

字符十进制;

decimal = hexstring [0] - '0' << 4 + hexstring [1] - '0'; // for 0 to 9

它提示从 int 到 char 的转换,据我所知,“-”、“+”和“<<”运算符似乎都隐式转换为 int。这是正确的还是我对警告的解释有误。还是有更好的方法来做到这一点?

此外,当将 strtol 用于 int 时(提示“long int”到“int”)但我可以保证值不会超过 short int 的大小,类型转换安全吗?就像它会截断 long 的额外(希望是零字节)一样吗?或者这取决于字节序?

谢谢

最佳答案

在这个具体案例中 -Wconversion应该给你你想要的警告,在我的简单测试用例 ( see it live ) 中:

char func()
{
int x = 10 ;

return x ;
}

int main() {}

我收到以下警告:

warning: conversion to 'char' from 'int' may alter its value [-Wconversion]

关于c - 不同返回类型的 gcc 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com