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

Zapętlanie się include cpp.

0 głosów
1,037 wizyt
pytanie zadane 31 grudnia 2020 w C i C++ przez kubekszklany Gaduła (3,250 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,250 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 (195,220 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ź 278 wizyt
pytanie zadane 18 października 2015 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 731 wizyt
pytanie zadane 20 lipca 2015 w PHP przez Ivan Maniak (60,650 p.)
0 głosów
1 odpowiedź 730 wizyt
pytanie zadane 3 kwietnia 2022 w PHP przez jamie80 Początkujący (320 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2630p. - DziarnowskiJ
  3. 2361p. - Łukasz Piwowar
  4. 2340p. - CC PL
  5. 2317p. - raydeal
  6. 2300p. - Adrian Wieprzkowicz
  7. 2243p. - rucin93
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...