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

Zapętlanie się include cpp.

Object Storage Arubacloud
0 głosów
388 wizyt
pytanie zadane 31 grudnia 2020 w C i C++ przez kubekszklany Gaduła (3,190 p.)
Witam. Mam taki problem, mianowicie chciałem podzielić kod do arduino na kilka mniejszych plików, jednak nijak nie mogę ich ze sobą połączyć. Mianowicie, mam plik main, w którym jest trochę zmiennych, a także #include <display.h> (do używania wyświetlacza) i #include <gui.h> (do uruchomiania gui). W gui.cpp mam #include <main.h> (żeby mieć dostęp do pewnych zmiennych z main) a także #include <display.h> (do używania wyświetlacza). Plik display.cpp też ma #include <main.h> (żeby mieć dostęp do pewnych zmiennych z main).

Reasumując, mam 3 pliki, każdy z nich ma #include do dwóch pozostałych, przez co tworzy mi się taka jakby pętla i dostaję błędy o nieskończonych include'ach czy powtórzonych deklaracjach. Jak to rozwiązać, żeby z każdego pliku mieć dostęp do każdego innego?

Gdybym źle wytłumaczył to proszę pytać, na co dzień programuję w c# a tam nie ma z tym problemu, wystarczy NazwaPliku.NazwaFunkcji(); i działa, stąd moje pytanie.

1 odpowiedź

0 głosów
odpowiedź 31 grudnia 2020 przez Mateusz1223 Bywalec (2,440 p.)

Dodaj na początku każdego pliku .h 

#pragma once

Ewentualnie poczytaj o czymś takim jak include guard.

Mam nadzieję, że pomogłem :)

komentarz 31 grudnia 2020 przez edwardkraweznik Dyskutant (9,930 p.)

teraz tak patrze i widzę 2 definicje IFNDEF MAIN_H w plikach main.cpp i plik.h a wewnątrz includujesz main.h ... a w main.h jest int x;

...

cheeky

komentarz 31 grudnia 2020 przez kubekszklany Gaduła (3,190 p.)

 ten screen nie przedstawia programu który ty kompilujesz

To jest dokładnie to co skompilowałem.

teraz tak patrze i widzę 2 definicje IFNDEF MAIN_H w plikach main.cpp i plik.h a wewnątrz includujesz main.h ... a w main.h jest int x;

W takim razie co mam zrobić jeżeli chcę użyć main.h więcej niż 1 raz? Może to być plik_a.cpp i plik_b.cpp, bez znaczenia, jak użyję 2 razy to zawsze mam podwójną deklarację int x.

komentarz 31 grudnia 2020 przez edwardkraweznik Dyskutant (9,930 p.)
komentarz 31 grudnia 2020 przez edwardkraweznik Dyskutant (9,930 p.)
musisz podejść do tego tak, że dyrektywy preprocesora nie mają nic wspólnego z c++em...
komentarz 1 stycznia 2021 przez j23 Mędrzec (194,920 p.)

W takim razie co mam zrobić (...)

#ifndef MAIN_H
#define MAIN_H

extern int x;

#endif
#include "main.h"

int x;

// reszta kodu

 

Podobne pytania

0 głosów
1 odpowiedź 184 wizyt
pytanie zadane 18 października 2015 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 511 wizyt
pytanie zadane 20 lipca 2015 w PHP przez Ivan Maniak (60,650 p.)
0 głosów
1 odpowiedź 429 wizyt
pytanie zadane 3 kwietnia 2022 w PHP przez jamie80 Początkujący (320 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...