Funkcje w programach składające się z kilku plikow
Ostatnio zmodyfikowano 2012-03-25 11:19
arqus Temat założony przez niniejszego użytkownika |
Funkcje w programach składające się z kilku plikow » 2012-03-24 21:49:44 Witam. Mam problem z połączeniem 3 plików. Mam dwa główne pliki (plik1.cpp i plik2.cpp) i plik nagłówkowy (naglowek.h) i jak to połączyć w całość? plik1.cpp : #include <iostream> using namespace std;
#include "n.h" int ile_murzynow = 9; int main() { cout << " Poczatek.\n"; funkcja_francuska(); funkcja_niemiecka(); cout << " Koniec.\n"; }
void funkcja_egipska() { cout << " Jestem w Kairze!-------\n"; cout << " Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow\n"; }
void funkcja_kenijska() { cout << " Jestem w Nairobi!-----\n"; cout << " Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow\n"; }
plik2.cpp : #include <<iostream> using namespace std;
#include "n.h" int ile_europejczykow = 8;
void funkcja_francuska() { cout << " Jestem w Paryzu!******\n"; cout << " Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow\n"; funkcja_egipska(); }
void funkcja_niemiecka( void ) { cout << " Jestem w Berlinie!******\n"; cout << " Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow\n"; funkcja_kenijska(); }
n.h : extern int ile_murzynow; extern int ile_europejczykow;
void funkcja_francuska(); void funkcja_niemiecka(); void funkcja_egipska(); void funkcja_kenijska();
Mam to wszystko ustawić w jakiejś określonej kolejności? Zacząć kompilowanie od któregoś konkretnego pliku? Proszę o pomoc. |
|
jsc |
» 2012-03-24 21:55:11 Zacznijmy od tego, że funkcja main () musi się znajdować w głównym pliku projektu (konstrukcja tworzona w IDE, dzięki której nadzoruje wszystkie pliki z kodem) .cpp w którym ponadto musisz includować wszystkie pliki .hpp z których korzysta i że nie można nadawać wartości zmiennych po za funkcjami. |
|
arqus Temat założony przez niniejszego użytkownika |
Proszę o pomoc. » 2012-03-24 22:02:40 A w kompilatorze muszę mieć otwarte wszystkie te 3 pliki które chcę połączyć? I cały czas pokazuje mi komunikat: undefined reference to 'funkcja_francuska' , czyli tak jakby nie brało mi pod uwagę pliku nagłówkowego. |
|
jsc |
» 2012-03-24 22:05:51 Wystarczy, że w IDE będziesz miał otwarty plik projektu. Zawartość plik2.cpp umieść przed funkcją main () i powinno zaskoczyć. |
|
arqus Temat założony przez niniejszego użytkownika |
» 2012-03-24 22:14:34 Nie mam w ogóle pojęcia co zrobić z plikiem nagłówkowym n.hpp żeby program zaczął działać ;/ |
|
jsc |
» 2012-03-24 22:21:53 |
|
npHard |
» 2012-03-25 10:43:28 Zacznijmy od tego, że funkcja main () musi się znajdować w głównym pliku projektu (konstrukcja tworzona w IDE, dzięki której nadzoruje wszystkie pliki z kodem) .cpp |
Nigdy nie słyszałem o czymś takim jak główny plik projektu .cpp. Plik z kodem to plik z kodem...
w którym ponadto musisz includować wszystkie pliki .hpp z których korzysta |
Pliki nagłówkowe można dołączać wtedy gdy są potrzebne...
i że nie można nadawać wartości zmiennych po za funkcjami. |
Tworzenie zmiennych globalnych jest złą praktyką ale gdy już się je tworzy to czemu nie można nadawać im wartości?
A do kolegi arqus'a:
Z jakiego IDE korzystasz? Kod wygląda dobrze, więc pewnie coś z ustawieniami projektu. Zawsze możesz spróbować stworzyć nowy pusty projekt i dodać do niego pliki. Powinno śmigać...
I pytałeś:
A w kompilatorze muszę mieć otwarte wszystkie te 3 pliki które chcę połączyć? |
Nie, musisz mieć wszystkie 3(a w szczególności te dwa pliki .cpp, bo nagłówkowe kompilator sam powinien znaleźć...), wszystkie 3 pliki dodane do projektu. Jak kompilujesz to prześledź log kompilatora i zobacz czy kompiluje wszystkie pliki. W ogólności najpierw powinien po kolei kompilować pliki .cpp. Nie ma znaczenia w jakiej kolejności. Potem powinien je zlinkować i to właśnie na tym etapie pojawiają się błędy typu "undefined reference". |
|
jsc |
» 2012-03-25 10:56:19 Nigdy nie słyszałem o czymś takim jak główny plik projektu .cpp. Plik z kodem to plik z kodem... |
a słyszałeś: coś z ustawieniami projektu. |
Tak się zapytam, gdzie są zapisane ustawienia projektu jak nie w głównym pliku projektu. |
|
« 1 » 2 |