如果我不关心返回值,我应该用什么返回类型声明一个函数?

时间:2015-07-13 11:42:38

标签: c return-value return-type function-declaration

在我的C文件中,我正在调用在生成的文件lex.yy.c中定义的函数:

yy_scan_string(input);

lex.yy.c中声明如下:

YY_BUFFER_STATE yy_scan_string(yyconst char *yystr);

反过来YY_BUFFER_STATEtypedef

typedef struct yy_buffer_state *YY_BUFFER_STATE;

这些都不能包含在头文件中。虽然为了致电yy_scan_string,我必须先申报。

什么是在我的源文件中声明此函数的最佳方法,当我根本不关心返回值时,包含返回类型的类型定义是不可行的?

3 个答案:

答案 0 :(得分:4)

将其声明为您所描述的内容,但将结构定义为opaque类型。只要你没有取消引用返回值(这听起来像你赢了),那就可以了。

struct yy_buffer_state;
typedef struct yy_buffer_state *YY_BUFFER_STATE;
YY_BUFFER_STATE yy_scan_string(yyconst char *yystr);

答案 1 :(得分:2)

普遍接受的程序是在头文件中定义函数,并在您调用它的文件的开头包含该文件。

如果由于某种原因没有提供头文件,你就可以了。

如果它只是少数几个函数,你可以在.c文件中本地声明它们。

该函数返回一个指向结构的指针,因此您可以使用前向声明:

typedef struct yy_buffer_state *YY_BUFFER_STATE;

但是我只能非常强烈地建议您将这些声明删除到自己的文件中。

答案 2 :(得分:-4)

只需输入其类型void

即可

例如:

#include <stdio.h>
void helloworld();

void main()
{
  helloworld();
}

void helloworld()
{
    printf("Hello World");
}