0

beeld我对变量的, knop, clips, foto, text, font, fontkleur, muziek,的多个定义有疑问event。问题主要在这些文件中:

全局变量.h

#ifndef globals_H
#define globals_H

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "SDL/SDL_mixer.h"

SDL_Surface *beeld = NULL;
SDL_Surface *knop = NULL;
SDL_Rect clips[ 4 ];
SDL_Surface *foto = NULL;
SDL_Surface *text = NULL;
TTF_Font *font = NULL;
SDL_Color fontkleur = { 100, 0, 10 };
Mix_Music *muziek = NULL;
SDL_Event event;

#endif

主文件

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "SDL/SDL_mixer.h"

#include "variabelen.h"
#include "class.h"
#include "functies.h"
#include "globals.h"

#include <string>


int main( int argc, char* args[] )
{
    bool stop = false;
    if( init(beeld_L,beeld_H,beeld_BPP) == false )
    {
        return 1;
    }

    foto = zichtbaar_scherm( "rescource/achtergrond.png" );
    knop = zichtbaar_scherm( "rescource/knop.png" );
    font = TTF_OpenFont( "rescource/lazy.ttf", 80 );
    muziek = Mix_LoadMUS( "rescource/muziek.wma" );

    laad_prenten(foto);
    laad_prenten(knop);
    laad_text(font);
    laad_muziek(muziek);

    if( laad_prenten(foto) == false || laad_prenten(knop) == false || laad_text(font) == false || laad_muziek(muziek) == false )
    {
        return 1;
    }

    set_clips();

    Knop drukknop( 170, 180, 320, 120 );

    plus_laag( 0, 0, foto, beeld );

    text = TTF_RenderText_Solid( font, "START !", fontkleur );
    plus_laag( ( 320 - text->w ) / 2, 30, text, knop );
    Mix_PlayMusic( muziek, -1 );

    while( stop == false )
    {
        if( SDL_PollEvent( &event ) )
        {


            if( event.type == SDL_QUIT )
            {
                stop = true;
            }
            if( drukknop.events() == true )
            {
                stop = true;
            }
        }
        drukknop.toon();

        if( SDL_Flip( beeld ) == -1 )
        {
            return 1;
        }
    }

    afsluiten();

    return 0;
}

该程序制作了一个小菜单:D

4

1 回答 1

4

像在 .h 文件中那样定义变量有一个严重的问题。这样的定义为该变量保留空间,因此如果您在两个不同的 C++ 文件中包含这样的 .h 文件,您将在每个 c++ 模块中获得单独的实例,这在链接时会给您带来冲突。

通常在 .h 文件中,变量被声明(但未定义) extern 像这样

extern int X;

这使符号有效但不保留内存,因此如果您包含 extern 关键字,那么多个定义的问题就会消失。但是,您确实需要 ONE 模块中的一个真正的完整定义(可能是您的 main.cpp 文件)

int X=0;
于 2012-07-31T15:10:33.880 回答