解决头文件中的“错误:预期标识符”?

时间:2019-09-16 11:25:40

标签: c struct compiler-errors header-files

我不理解dsoptlow.h中排除了什么标识符。

我正在练习在标头中创建函数声明。这应该只使用2个变量交换2个值,并返回相同的变量,但要交换值。

但是在编译过程中会显示此错误消息,我不知道自己输入的错误或输入错误的内容:

  

错误:预期标识符或'('inint'之前的

此外,如果您可以为我的函数提供更好的版本以返回多个值,将不胜感激。

最后但并非最不重要的一点是,函数定义中定义的类型是否在主函数中返回该类型?那么它返回我定义为新类型的struct还是整数?

error message during compilation-time

以下代码是我的标题。

#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;
}

2 个答案:

答案 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。如果返回的值在程序的其他地方使用,则将导致不确定的行为,并且您将获得无法预测的结果。