在yacc中声明全局变量

时间:2009-12-27 14:20:43

标签: c global-variables yacc

我有一些源代码文件,例如hashtable.c等。主要问题是当我写main.c时:

#include "tokens.h"
#include <stdio.h>
void yyerror(char *errorMsg)
{
fprintf(stderr, "%s\n", errorMsg);
}


main() 
{
  yyparse();
  hsh = createHashtable();

}

在我的yacc文件(parser.y)的顶部,我想要解析一个哈希表:

%{
#include <stdio.h>
#include "tokens.h"
#include "ast.c"


struct hashtable *hsh;
.............................
..............................

但是我收到了这个错误。

main.c: In function ‘main’:
main.c:24: error: ‘hsh’ undeclared (first use in this function)
main.c:24: error: (Each undeclared identifier is reported only once
main.c:24: error: for each function it appears in.)
make: *** [main.o] Error 1

在C编程方面我很天真,任何帮助都会很棒

1 个答案:

答案 0 :(得分:6)

您的extern struct hashtable* hsh;

需要main.c