我不理解dsoptlow.h中排除了什么标识符。
我正在练习在标头中创建函数声明。这应该只使用2个变量交换2个值,并返回相同的变量,但要交换值。
但是在编译过程中会显示此错误消息,我不知道自己输入的错误或输入错误的内容:
错误:预期标识符或'('inint'之前的>
此外,如果您可以为我的函数提供更好的版本以返回多个值,将不胜感激。
最后但并非最不重要的一点是,函数定义中定义的类型是否在主函数中返回该类型?那么它返回我定义为新类型的struct
还是整数?
以下代码是我的标题。
#ifndef _dswapoptlow_h
#define _dswapoptlow_h
struct dswap_opt_low(int inp_1; int inp_2;);
#endif
以下代码是函数定义。
//dswapoptlow.c src file
#include "dswapoptlow.h"
struct _return{int a;int b;}; //Init a struct named _return for 2 integer variables.
typedef struct _return _struct;
_struct dswap_opt_low(int inp1, int inp2)
{
_struct _instance;
_instance.a=inp1;
_instance.b=inp2;
_instance.a=_instance.a+_instance.b;
_instance.b=_instance.a-_instance.b;
_instance.a=_instance.a-_instance.b;
return _instance;
}
答案 0 :(得分:1)
该消息非常混乱(应该有另一个错误),但是您的函数返回一个struct
,并且编译器不知道此struct
移动这两行:
struct _return{int a;int b;}; //Init a struct named _return for 2 integer variables.
typedef struct _return _struct;
从.c
到.h
答案 1 :(得分:1)
dswap_opt_low
是一个函数声明。该函数返回一个struct _return
并接受两个参数。
正确的语法是
struct _return dswap_opt_low(int inp_1, int inp_2);
此外,您可以将_struct
的定义和typedef移到标题中,以便在那里可以看到它们。然后您可以使用
struct _return{int a;int b;}; //Init a struct named _return for 2 integer variables.
typedef struct _return _struct;
_struct dswap_opt_low(int inp_1, int inp_2);
请注意,在标识符的第一个字符中使用_
是一种不良的设计实践。我建议您更改名称并使用更多描述性类型。
其他说明-您的函数dswap_opt_low
返回一个局部变量_instance
。如果返回的值在程序的其他地方使用,则将导致不确定的行为,并且您将获得无法预测的结果。