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

Zapętlanie się include cpp.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
637 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,260 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ź 219 wizyt
pytanie zadane 18 października 2015 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 616 wizyt
pytanie zadane 20 lipca 2015 w PHP przez Ivan Maniak (60,650 p.)
0 głosów
1 odpowiedź 606 wizyt
pytanie zadane 3 kwietnia 2022 w PHP przez jamie80 Początkujący (320 p.)

93,174 zapytań

142,185 odpowiedzi

321,971 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...