如果我不关心返回值,我应该声明什么返回类型?
在我的C文件,我打电话是在生成的文件中定义的函数,lex.yy.c
:如果我不关心返回值,我应该声明什么返回类型?
yy_scan_string(input);
被宣布为继lex.yy.c
:
YY_BUFFER_STATE yy_scan_string(yyconst char *yystr);
而反过来YY_BUFFER_STATE
是typedef
:
typedef struct yy_buffer_state *YY_BUFFER_STATE;
这些都不适用于包括e来自头文件。虽然为了拨打yy_scan_string
我必须先申报。
当我不关心返回值时,在我的源文件中声明这个函数的最佳方式是什么,并且包含返回类型的类型定义是不可行的?
普遍接受的方法是定义在头文件的功能,包括你把它叫做文件的启动文件从。
如果由于某种原因,没有提供头文件,你会做到这一点。
如果只有少数函数可以在.c文件中本地声明它们。
该函数返回一个指针结构,所以你可以使用前置声明:
typedef struct yy_buffer_state *YY_BUFFER_STATE;
但是我只能建议非常强烈,你删除那些声明自己的文件。
只是要它的类型void
例如:
#include <stdio.h>
void helloworld();
void main()
{
helloworld();
}
void helloworld()
{
printf("Hello World");
}
将它声明为您已如何描述,但将结构定义为不透明类型。只要你不取消引用返回值(听起来你不会),那么这将工作得很好。
struct yy_buffer_state;
typedef struct yy_buffer_state *YY_BUFFER_STATE;
YY_BUFFER_STATE yy_scan_string(yyconst char *yystr);
这里需要不透明的结构声明吗?如果我省略第一行,gcc不会给出任何警告/错误。 –
@RyanLi第二行隐式转发声明'struct yy_buffer_state',因此您指出第一行不是必需的。 – Persixty
uff ....不再...离开'main()'..为你的例子输入任何其他函数... –
好吧。等待编辑。 –