Variable dans l'en-tête d'un fichier non déclaré à la portée

Ok, je sais que certaines questions similaires ont probablement été mis sur ici avant, mais je ne pouvais pas trouver quelque chose à ce sujet n'importe où sur internet, donc je ne peux que supposer que c'est parce que je ne suis pas bon avec le C++ et j'ai fait quelque chose de mal sans s'en rendre compte.

Dans mon jeu que je suis en train de faire, j'ai ma main .fichier cpp qui inclut un en-tête de fichier (appelons-le A), qui comprend tous les autres fichiers d'en-tête (appelons-B). Dans l'un de ces B fichiers d'en-tête, j'ai inclus le fichier pour accéder à la programRunning booléen qui est défini. Aucun des B fichiers d'en-tête, malgré, y compris le fichier qui définit la variable, semblent être en mesure de l'utiliser. Je suis vraiment confus par cela et voudrais vraiment l'apprécier un peu d'aide. Ci-dessous le code que j'ai utilisé:

pong_header.h (Un fichier d'en-tête comme décrit ci-dessus)

#ifndef PONG_HEADER_H
#define PONG_HEADER_H

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <stdio.h>

#include "pong_graphics.h"
#include "pong_core.h"
#include "pong_entity.h"
#include "pong_event.h"

bool programRunning;

#endif

pong_event.h (un des B fichiers d'en-tête)

#ifndef PONG_EVENT_H
#define PONG_EVENT_H

#include "pong_header.h"


void Pong_handleEvents(SDL_Event event)
{
    while(SDL_PollEvent(&event))
    {
        switch(event.type)
        {
        case SDL_QUIT:
            programRunning = true;
            break;
        case SDL_KEYDOWN:
            switch(event.key.keysym.sym):
            case SDLK_ESCAPE:
                programRunning = false;
                break;
            break;

        default:
            break;
        }
        Pong_handleEntityEvents(event)
    }
}

Les autres B les fichiers d'accès programRunning de la même manière.

L'erreur exacte de Code::Blocks me donne est comme suit
Pong\pong_event.h|20|error: 'programRunning' was not declared in this scope

Ce que vous avez posté devrait fonctionner. Je soupçonne que ce que vous décrivez et la réalité est légèrement différente?
Faire extern bool programRunning; et avez une source, aussi. (bool en cours d'exécution). N'oubliez pas de décorer avec l'import/export si c'est un dlll

OriginalL'auteur ftm500 | 2013-08-14