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

Funkcje w programach składające się z kilku plikow

Ostatnio zmodyfikowano 2012-03-25 11:19
Autor Wiadomość
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 :
C/C++
#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 :
C/C++
#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 :
C/C++
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.
P-53159
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.
P-53160
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.
P-53162
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ć.
P-53164
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ć ;/
P-53166
jsc
» 2012-03-24 22:21:53
Z twojego pierwszego programu nie bardzo widzę strukturę kodu, więc zajrzyj do:
» Kurs STC » PodstawyWstawianie kodu źródłowego lekcja
P-53167
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".
P-53173
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.
P-53174
« 1 » 2
  Strona 1 z 2 Następna strona