在yacc中声明全局变量
我有一些源代码文件,比如hashtable.c等等。主要问题是,当我编写main.c时:在yacc中声明全局变量,c,global-variables,yacc,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(); } 谈到C编程,我相当幼稚,任何帮助都将是巨大的您需要一个外部结构哈希表*h
#include "tokens.h"
#include <stdio.h>
void yyerror(char *errorMsg)
{
fprintf(stderr, "%s\n", errorMsg);
}
main()
{
yyparse();
hsh = createHashtable();
}
谈到C编程,我相当幼稚,任何帮助都将是巨大的您需要一个
外部结构哈希表*hsh
在你的main.c
你能说得更具体一点吗,我很困惑你需要在你的main.c中声明符号“hsh”是在其他编译单元中定义的。这是通过“extern”修饰符完成的;请看,如果用户将extern声明放在头文件中,并在语法和主程序中都包含该头文件,那么效果会更好。这两个文件中的一个实际上应该定义变量——在语法中这样做是可以的。
%{
#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