C中两个文件之间全局变量的使用
Use of global variables between two files in C
我需要使用首先在 .c 文件中声明的全局变量,然后在两个不同的 .c 文件中使用。问题,我在编译时收到错误消息。
这是声明,那里:
bool UP = false;
下面是我的使用方法:
extern bool UP;
我收到了这条错误信息。如果我将这些变量放在第二个文件中,它编译完美,但由于我需要在另一个文件中使用这些变量,所以我需要共享它。
gcc -c game.c -lGL -lGLU -lglut
gcc -o program main.o loadMap.o draw.o game.o object.o menu.o -lGL -lGLU -lglut
/usr/bin/ld: game.o: in function `game':
game.c:(.text+0x34): undefined reference to `Keyboard'
/usr/bin/ld: game.c:(.text+0x95): undefined reference to `UP'
collect2: error: ld returned 1 exit status
make: *** [makefile:10: program] Error 1
编辑:这里有更多源代码。
这是我声明变量的 .h 文件
#ifndef KEYBOARD_H_
#define KEYBOARD_H_
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
bool UP = false;
bool LEFT = false;
bool RIGHT = false;
bool DOWN = false;
bool UP_MENU = false;
bool DOWN_MENU = false;
void Keyboard(unsigned char key, int x, int y);
#endif
我想在这里使用它:
void game(int mX, int mY, Player p)
{
drawMap(mX, mY); //afficher la carte
drawPlay(p); //Affiche le player
glutKeyboardFunc(Keyboard); //fonction de glut gérant le clavier
if (LEFT == true)
{
moveLeft(p); //va se déplacer vers la gauche si on appuie sur q
LEFT = false;
}
if (RIGHT == true)
{
moveRight(p); //va se déplacer vers la droite si on apppuie sur d
RIGHT = false;
}
if (UP == true)
{
moveUp(p);
UP = false;
}
if (DOWN == true)
{
moveDown(p);
DOWN = false;
}
glutPostRedisplay();//upload la position du joueur
}
您需要将变量的定义放入.c 文件。
在keyboard.h中:
extern bool UP;
在keyboard.c中:
bool UP = false;
在其他c文件中包含keyboard.h以使用UP
。
我需要使用首先在 .c 文件中声明的全局变量,然后在两个不同的 .c 文件中使用。问题,我在编译时收到错误消息。
这是声明,那里:
bool UP = false;
下面是我的使用方法:
extern bool UP;
我收到了这条错误信息。如果我将这些变量放在第二个文件中,它编译完美,但由于我需要在另一个文件中使用这些变量,所以我需要共享它。
gcc -c game.c -lGL -lGLU -lglut
gcc -o program main.o loadMap.o draw.o game.o object.o menu.o -lGL -lGLU -lglut
/usr/bin/ld: game.o: in function `game':
game.c:(.text+0x34): undefined reference to `Keyboard'
/usr/bin/ld: game.c:(.text+0x95): undefined reference to `UP'
collect2: error: ld returned 1 exit status
make: *** [makefile:10: program] Error 1
编辑:这里有更多源代码。 这是我声明变量的 .h 文件
#ifndef KEYBOARD_H_
#define KEYBOARD_H_
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
bool UP = false;
bool LEFT = false;
bool RIGHT = false;
bool DOWN = false;
bool UP_MENU = false;
bool DOWN_MENU = false;
void Keyboard(unsigned char key, int x, int y);
#endif
我想在这里使用它:
void game(int mX, int mY, Player p)
{
drawMap(mX, mY); //afficher la carte
drawPlay(p); //Affiche le player
glutKeyboardFunc(Keyboard); //fonction de glut gérant le clavier
if (LEFT == true)
{
moveLeft(p); //va se déplacer vers la gauche si on appuie sur q
LEFT = false;
}
if (RIGHT == true)
{
moveRight(p); //va se déplacer vers la droite si on apppuie sur d
RIGHT = false;
}
if (UP == true)
{
moveUp(p);
UP = false;
}
if (DOWN == true)
{
moveDown(p);
DOWN = false;
}
glutPostRedisplay();//upload la position du joueur
}
您需要将变量的定义放入.c 文件。
在keyboard.h中:
extern bool UP;
在keyboard.c中:
bool UP = false;
在其他c文件中包含keyboard.h以使用UP
。