Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[VC++ 2010 Exp] Drobne problemy z inkludowaniem plików nagłówokowych...

Ostatnio zmodyfikowano 2011-10-03 18:53
Autor Wiadomość
Mrovqa
Temat założony przez niniejszego użytkownika
[VC++ 2010 Exp] Drobne problemy z inkludowaniem plików nagłówokowych...
» 2011-10-01 20:05:54
Witam!

Piszę gierkę i staram się zachować przejrzystość kodu (z resztą jak zawsze ;P). I mam taki kłopot (załączanie się plików):
C/C++
--------plik1.h---------
/* "straznik naglowka" */

#include "declarations.h"

namespace GS
{
    class GameState /* definicja */;
}
---------plik2.h--------------
/* "straznik naglowka" */

#include "declarations.h"

class /* definicja, korzysta z "plik1.h" */

---------declarations.h------------
extern class GS::GameState;

#include "plik1.h"
#include "plik2.h"
// i inne przydatne biblioteki
Problem w tym, że plik2.h nie widzi klasy z plik1.h :/ Mimo zapowiedzi, którą dodałem... Da się to jakoś zrobić? Czy trzeba mieć te długawe listy include ?? Zauważyłem nawet, że przez to:
C/C++
#include "declarations.h"

/*
TODO:


*/

int main()
{
   
   
    return 0;
}
Wywala to:
1>d:\c++\my projects\poważne\sfml arkanoid\sfml arkanoid\main.cpp(10): error C2143: syntax error : missing ';' before '{'
1>d:\c++\my projects\poważne\sfml arkanoid\sfml arkanoid\main.cpp(14): error C2143: syntax error : missing ';' before '}'
1>d:\c++\my projects\poważne\sfml arkanoid\sfml arkanoid\main.cpp(15): error C2143: syntax error : missing ';' before '}'
1>d:\c++\my projects\poważne\sfml arkanoid\sfml arkanoid\main.cpp(15): fatal error C1004: unexpected end-of-file found
:/

Moje pytanie:
czy jest jakiś sposób na takie 'fajne' inkludowanie? Czy jednak trzeba te biblioteki klepać do każdego pliku osobno? :/

Pozdrawiam,
Mrowqa
P-41595
malan
» 2011-10-01 22:30:58
Daj zapowiedź w plik2.h.
P-41597
Mrovqa
Temat założony przez niniejszego użytkownika
» 2011-10-02 13:31:45
To nic nie da (bo i tak zapowiedź jest w declarations.h) i (bo i tak sprawdziłem) - nie zadziałało ;P Jednak będę po prostu żmudnie inkludował ... :/
P-41607
malan
» 2011-10-02 17:10:57
C/C++
// main.cpp
#include "include.h"

int main()
{
}

C/C++
// include.h
#ifndef INCLUDE_H
#define INCLUDE_H

#include "file1.h"
#include "file2.h"

#endif

C/C++
// file1.h
#ifndef FILE1_H
#define FILE1_H

namespace Test
{
    class File1
    {
    public:
        File1();
       
    private:
        //...
    };
}

#endif

C/C++
// file2.h
#ifndef FILE2_H
#define FILE2_H

class Test::File1;

class File2
{
public:
    File2();
   
private:
    Test::File1 * ptr;
};

#endif

1>------ Build started: Project: 5214, Configuration: Debug Win32 ------
1>  main.cpp
1>  5214.vcxproj -> E:\Programowanie\Visual Studio 2010 projects\5214\Debug\5214.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
P-41611
Mrovqa
Temat założony przez niniejszego użytkownika
» 2011-10-02 17:49:27
aaaaaa...
Ja w plikach nagłówkowych inkludowałem niepotrzebnie plik z deklaracjami... :)
Dzięki

ale! przez to i tak będę musiał dołączać np. vector (obojętne czy extern czy include...).
P-41613
malan
» 2011-10-02 18:53:02
Nie rozumiem co Ty chcesz osiągnąć.
P-41615
DejaVu
» 2011-10-02 19:37:55
On chciałby zapewne wszystkie pliki wypisać w jednym pliku i używać zapisu:
C/C++
#include <wciagnij_wszystko.h>
Tyle, że tak się nie programuje :)
P-41618
Mrovqa
Temat założony przez niniejszego użytkownika
» 2011-10-03 18:53:29
@up
O coś mniej więcej takiego mi chodziło :P Jednak nie zawsze to ma sens... (MTC było bardzo rozbudowane, więc dla ułatwienia nawigacji podzieliłem sobie kod na pliki i deklaracje wrzuciłem do jednego nagłówka, inkludowanie plików przy okazji :P). Od razu dorzucę, że podział nie był bezsensowny... (plik na procedurę do obsługi komunikatów, pomocnicze funkcje, wątki...).
Póki co jednak nie korzystam z tego i chyba nie będę... chyba :D
P-41655
« 1 »
  Strona 1 z 1