Jaklub Opublikowano 29 Kwietnia 2010 Udostępnij Opublikowano 29 Kwietnia 2010 postanowiłem wziąć się w garść i kontynuować mój projekt pisany w C. zdecydowałem się nie cackać z winsockiem bezpośrednio, więc muszę przepisać projekt na C++, jednak po prostu nie ogarniam poprawnego załączania dodatkowych plików do kodu. w C robiłem to tak: main.c #include "plik.h" int main() { super(); ... dalszy kod ... plik.h int c; void super(); plik.c #include "plik.h" void super() { c=0; } metoda ta oczywiście wywala błędy (bodajże wielokrotne inicjowanie danej wartości). piszę z pamięci. jak robić to tak, aby działało? edit: poprawka w kodzie, fatalny błąd był Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 29 Kwietnia 2010 Udostępnij Opublikowano 29 Kwietnia 2010 jak masz dwa pliki korzystające z jednej zmiennej to używaj extern a nie deklaruj w haderze przykład: lolek.cpp: ... int kabu; kabu=3; .... bolek.cpp: ... extern int kabu .... i w tedy zmienna w bolku będzie miała wartość 3 możesz też używać funkcji np bool zom(); zamiast bool zom; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 29 Kwietnia 2010 Autor Udostępnij Opublikowano 29 Kwietnia 2010 używaj znaczników [ code ]. poza tym, twój post jest po prostu dziwny i nieprzejrzysty. ale dzięki za starania Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 29 Kwietnia 2010 Udostępnij Opublikowano 29 Kwietnia 2010 ale w jakim sensie dziwny? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 29 Kwietnia 2010 Udostępnij Opublikowano 29 Kwietnia 2010 Deklarację tej zmiennej w pliku .h zostaw, dodaj tylko jej definicję w .cpp poprzedzoną keywordem "extern". // plik.h int zmienna; // plik.cpp extern int zmienna; Poza tym, zabezpiecz ten plik nagłówkowy przed wielokrotnym include'owaniem (#pragma once albo za pomocą makr). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 29 Kwietnia 2010 Autor Udostępnij Opublikowano 29 Kwietnia 2010 więc bez externów się nie obędzie. szkoda, będzie trochę roboty. spróbuję tego użyć, jeśli próba zakończy się niepowodzeniem, zedytuję tego posta. ale dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 29 Kwietnia 2010 Udostępnij Opublikowano 29 Kwietnia 2010 da sie masz przykład a.h: int lol(); b.cpp: #include <iostream> #include <conio.h>// dla getch() #include "a.h" int main() { std::cout << lol(); getch(); } c.cpp: #include <iostream> #include "a.h" int lol() { return 10; } po prostu używaj w haderze funkcji int lol() zamiast int lol Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 29 Kwietnia 2010 Autor Udostępnij Opublikowano 29 Kwietnia 2010 mipo57, dla mnie najważniejsze są zmienne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Pisz obiektowo. Serio, o wiele łatwiej. przyjemniej i prościej. Zmienne globalne to chyba jakiś żart. Jedna z większych zalet cpp (można by mówić też o tym całym objective-cpp ale widziałem go tylko w api dla iphona/itoucha/ipada). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Pierdzielicie trzy po trzy. Ktoś z was wo gule sprawdzał czy to się skompiluje? Po pierwsze... "int c;" w pliku H nie ujdzie... Po drugie, tam powinno się znajdować "extern int c;". Po drugie "int c;" wstawia się w pliku CPP, a "extern int c;" w H :) Dla opornych: Plik *.H #ifndef _*_H_ #define _*_H_ extern int c; void super( void ); #endif Plik *.CPP include "*.H" int c = 0; void super( void ) { c = 10; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 30 Kwietnia 2010 Autor Udostępnij Opublikowano 30 Kwietnia 2010 zrobiłem tak jak napisał Konrad-GM i zaczęło działać. jeśli będą jeszcze jakieś błędy, dam edita. dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się