C语言返回结构体时报‘return’ with a value, in function returning void警告
警告产生原因
- 你通过
typedef定义了匿名结构体的别名为values,C语言中这种写法仅声明了别名values作为合法类型名,不存在名为struct values的结构体类型。 - 定义
get_keyword函数时,返回值写为struct values,编译器无法识别该类型,部分兼容旧C标准的编译器会将无法识别的返回类型默认判定为void,此时函数内部返回keyword变量的操作就触发了「返回void的函数带有返回值」的警告。
解决方法
任选其中一种即可:
- 直接使用已经定义好的类型别名,修改
get_keyword函数的返回值声明:
// 修改前 struct values get_keyword(void) // 修改后 values get_keyword(void)
- 定义结构体时显式声明结构体标签,让
struct values成为合法类型:
// 修改前 typedef struct { int a; char b; } values; // 修改后 typedef struct values { int a; char b; } values;
内容的提问来源于stack exchange,提问作者Mahesh Reddy Sanagapalle
相关产品推荐
相关产品推荐

