• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Kompilacja laczna - nie mozna skompilowac programu

Object Storage Arubacloud
0 głosów
185 wizyt
pytanie zadane 31 marca 2019 w C i C++ przez mrKaczorrro13 Użytkownik (560 p.)
zamknięte 31 marca 2019 przez mrKaczorrro13

Witam!

Mam problem z kompilacja przykladowego programu z ksiazki "Jezyk C++ szkola programowania". Porownalem  caly kod z kodem z ksiazki i wydaje sie ze powinno byc wszystko wporzadku, jednak program sie nie kompiluje i wyswietla mi podany komunikat bledu:

collect2.exe: error: ld returned 1 exit status

Oto kod:

//external.cpp -- zmienne zewnetrzne
#include <iostream>
using namespace std;
//zmienna zewnetrzna:
double warming=0.3; //definicja zmiennej warming
//prototypy funkcji:
void update(double dt);
void local();

int main()          //korzysta ze zmiennej globalnej
{
    cout << "Globalne ocieplenie wynosi " <<warming<<" stopni.\n";
    update(0.1);
    cout << "Globalne ocieplenie wynosi " <<warming<<" stopni.\n";
    local();
    cout << "Globalne ocieplenie wynosi " <<warming<<" stopni.\n";
    return 0;
}
//support.cpp - stosowanie zmiennych zewnetrznych
#include <iostream>
extern double warming;    //deklaracja referancyjna zmiennej warming z innego pliku
//zmienna zewnetrzna:
double warming=0.3;         //definicja zmiennej warming
//prototypy funkcji:
//void update(double dt);
//void local();
using std::cout;

void update(double dt)      //modyfikuje zmienna globalna
{
    extern double warming;  //optymalne powtorzenie deklaracji
    warming+= dt;            //odwolanie do globalnej warming
    cout<<"Zwiekszam parametr ocieplenia do "<<warming;
    cout<<" stopni.\n";
}

void local()                //korzysta ze zmiennej lokalnej
{
    double warming=0.8;     //nowa zmienna przeslania zmienna zewnetrzna

    cout<<"Lokalne ocieplenie wynosi "<<warming<<" stopni.\n";
    //odwolanie do zmiennej globalnej za pomoca operatora zasiegu
    cout<<"Ale globalne ma wartosc "<<::warming;
    cout<<" stopni.\n";
}

Z gory wielkie dzieki za pomoc.

komentarz zamknięcia: Znaleziona odpowiedz
komentarz 31 marca 2019 przez mrKaczorrro13 Użytkownik (560 p.)
Zapomnialem dodac ze utworzylem nowy plik 9.6 support w folderze z "main" i polaczylem ze soba dwa pliki.

1 odpowiedź

0 głosów
odpowiedź 31 marca 2019 przez mrKaczorrro13 Użytkownik (560 p.)
Blad jest w podreczniku. Wedlug reguly jednokrotnej definicji, zmienna moze byc  definiowana tylko jeden raz. Jesli w kilku plikach wystepuje zmienna zewnetrzna, jej definicja moze pojawic sie tylko w jednym z tych plikow. Ale we wszystkich pozostalych plikach wymagana jest deklaracja tejze zmiennej ze slowen "extern". W podanym przykladzie jest ta sama  definicja w dwoch plikach.

double warming=0.3;

Jak to jest, ze zazwyczaj kiedy kogos zapytam o podpowiedz albo napisze na forum o problemu to 5 minut pozniej sam znajduje odpowiedz? :)

Podobne pytania

0 głosów
4 odpowiedzi 8,508 wizyt
pytanie zadane 18 października 2016 w C i C++ przez MarioMZ Nowicjusz (170 p.)
0 głosów
3 odpowiedzi 1,230 wizyt
0 głosów
2 odpowiedzi 303 wizyt

92,547 zapytań

141,390 odpowiedzi

319,509 komentarzy

61,931 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...