C++, funkcja zewnętrzna
Ostatnio zmodyfikowano 2025-04-12 13:19
czerwonymoskit Temat założony przez niniejszego użytkownika |
» 2025-04-10 09:55:28 main.cpp #include <cstdio> #include "FUNC_ZEWN_TEST.hpp" #include "ZMIENNE.hpp"
using namespace std;
int main() { func_zewn_test(); przerwa = true; cout << endl << endl; func_zewn_test(); cout << endl << "ENTER..." << endl; getchar(); }
ZMIENNE.hpp #ifndef ZMIENNE #define ZMIENNE
void zmienne( void );
#endif
ZMIENNE.cpp #include "ZMIENNE.hpp"
void zmienne( void ) { bool przerwa = false; }
FUNC_ZEWN_TEST.hpp #ifndef FUNC_ZEWN_TEST #define FUNC_ZEWN_TEST #include <iostream>
extern bool przerwa;
void func_zewn_test( void );
#endif
FUNC_ZEWN_TEST.cpp #include "FUNC_ZEWN_TEST.hpp"
void func_zewn_test( void ) { if( przerwa == false ) std::cout << "Nic" << std::endl; else std::cout << "Przerwa" << std::endl; }
E:\Manager\Projekt2\freakManager\test_funkcji_zewn\func_zewn_test.cpp|5|undefined reference to `przerwa'| Wydaje mi się, że najlepiej byłoby stworzyć funkcje zmienne w której zawarte były by wszystkie zmienne globalne. Nie wiem tylko jak ją dołączyć do main'a by wszystkie inne funkcje widziały te zmienne. Program mi działa gdy operuje na pojedynczej zmiennej bool, poprzez extern w pliku hpp i definicje w pliku cpp. Natomiast chciałbym zamienić pojedynczą zmienna na całą funkcję w której były by wszystkie potrzebne mi zmienne. I to mi nie działa. Coś mi się wydaje, że powinienem plik zmienne.hpp inkludować do każdego pliku z funkcją. Tylko nie wiem czy do hpp czy cpp. Będę przy kompie to po kombinuje. |
|
skovv |
» 2025-04-10 19:50:07 Albo stwórz sobie klasę/strukturę i w niej trzymaj? |
|
pekfos |
» 2025-04-10 22:17:27 Wydaje mi się, że najlepiej byłoby stworzyć funkcje zmienne w której zawarte były by wszystkie zmienne globalne. Jeśli będą w funkcji, to będą lokalne, nie globalne. Program zadziała jak zdefiniujesz bool przerwa jako zmienną globalną. #include "FUNC_ZEWN_TEST.hpp"
Nazwa pliku nie musi być wielkimi literami. Jest dowolna, tak samo jak nazwa makra używanego jako include guard i te dwie nazwy są niezależne od siebie. |
|
czerwonymoskit Temat założony przez niniejszego użytkownika |
» 2025-04-11 14:01:49 Dotychczas miałem funkcje zmienne gdzie były wszystkie zmienne globalne. Podłączałem ja poprzez include hpp do main'a i to uprościło mi program. Natomiast teraz zacząłem go dzielić na funkcję void i chce mieć je osobno podłączane do main'a bym mógł osobno je edytować zewnętrznie. Tylko, że teraz nie bardzo wiem jak zrobić by te poszczególne funkcje zewnętrzne widziały te zmienne globalne. Bo nie chce do każdej z 25 funkcji przeklejać powiedzmy 50 zmiennych. Nie jestem teraz przy kompie to kombinuje w abstrakcji. Że gdybym podpiął hpp zmienne do każdego pliku cpp funkcji zewnętrznej to by te funkcję je widziały ale chyba musiałbym func zmienne jeszcze uruchomić. Nie wiem właśnie jak to zadziałać bo w tym kursie zdaje się nie było jak podłączać funkcje. |
|
skovv |
» 2025-04-11 15:24:34 #pragma once
class Klasa { public: int zmienna1, zmienna2 ...; void funkcja1(); bool funkcja2(); };
#include "klasa.h"
void Klasa::funkcja1() { zmienna1 = 123 }
#include "klasa.h"
void Klasa::funkcja2() { return true; }
Nie wiem co chcesz uzyskać ale tak chyba masz najłatwiej.. No i w main: #include "klasa.h"
Klasa k;
int main() { k.funkcja1(); return 0; }
|
|
czerwonymoskit Temat założony przez niniejszego użytkownika |
» 2025-04-11 20:36:25 Dziękuje za odpowiedź. Postudiuję ten kod, natomiast nie znam się na klasach. Dołączyłem plik zmienne.hpp do każdego pliku .cpp z funkcjami i mi działa. Przy czym zmienne globalne nie są już w funkcji void tylko normalnie jako extern deklaracja i w drugim pliku definicja. I lata :)
|
|
pekfos |
» 2025-04-11 20:55:31 Dotychczas miałem funkcje zmienne gdzie były wszystkie zmienne globalne. Co? Pokaż kod jak to miałeś zrobione. |
|
skovv |
» 2025-04-11 22:21:23 Nawet jeśli działa to jeśli myślisz przyszłościowo - nie rób tak. Nie kombinuj tam gdzie nie trzeba, lepiej ucz się robić takie rzeczy poprawnie |
|
1 « 2 » 3 |