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

C++, funkcja zewnętrzna

Ostatnio zmodyfikowano 2025-04-12 13:19
Autor Wiadomość
czerwonymoskit
Temat założony przez niniejszego użytkownika
» 2025-04-10 09:55:28
main.cpp
C/C++
#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
C/C++
#ifndef ZMIENNE
#define ZMIENNE

void zmienne( void );

#endif

ZMIENNE.cpp
C/C++
#include "ZMIENNE.hpp"

void zmienne( void )
{
   
bool przerwa = false;
   
}

FUNC_ZEWN_TEST.hpp
C/C++
#ifndef FUNC_ZEWN_TEST
#define FUNC_ZEWN_TEST
#include <iostream>

extern bool przerwa;

void func_zewn_test( void );

#endif

FUNC_ZEWN_TEST.cpp
C/C++
#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.
P-182220
skovv
» 2025-04-10 19:50:07
Albo stwórz sobie klasę/strukturę i w niej trzymaj?
P-182222
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ą.

C/C++
#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.
P-182223
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.
P-182225
skovv
» 2025-04-11 15:24:34
C/C++
// klasa.h
#pragma once

class Klasa {
public:
   
int zmienna1, zmienna2 ...;
   
   
void funkcja1();
   
bool funkcja2();
};

// funkcja1.cpp
#include "klasa.h"

void Klasa::funkcja1() {
   
zmienna1 = 123
}

// funkcja2.cpp
#include "klasa.h"

void Klasa::funkcja2() {
   
return true;
}

Nie wiem co chcesz uzyskać ale tak chyba masz najłatwiej..

No i w main:
C/C++
#include "klasa.h"

Klasa k;

int main() {
   
k.funkcja1();
   
return 0;
}
P-182227
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 :)
P-182229
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.
P-182231
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
P-182233
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona