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

question-closed [ESP32 C++] Problem z plikiem nagłówkowym i strukturą

Fiszki IT
Fiszki IT
0 głosów
85 wizyt
pytanie zadane 19 lipca w C i C++ przez Marak123 Dyskutant (9,150 p.)
zamknięte 21 lipca przez Marak123

Witam smiley

Robię sobie projekcik na płytkę ESP32 i mam mały problem z importem struktur które są zrobione w pliku nagłówkowym .h.

Plik nagłówkowy:

#ifndef STRUCTURE
#define STRUCTURE

#include <vector>
#include <cstdint>
#include <Arduino.h>
#include "function.h"

struct _wifi
{
  String SSID = "";
  String password = "";
  int localIP[4];
  int gateway[4];
  int subnet[4];
};

struct _ftpServer{
  char addrIP[];
  String username;
  String password;
};

#endif

A to jest plik do którego chcę importować te struktury:

#ifndef VARIABLES
#define VARIABLES

#include "structure.h"

_wifi dataWifi;  //Wifi dane konfiguracyjne
struct _ftpServer dataFtp; //Serwer ftp dane konfiguracyjne

#endif

 

I tutaj pojawia się problem bo te pliki są w tym samym folderze i niby się importuje ale i tak próbując stworzyć strukturę według wzoru np. _wifi to pokazuje ze nie ma takiej nazwy typu, czyli po prostu nie widzi tej struktury i teraz pytanie dlaczego nie widzi tych struktur inny plik nagłówkowy??

Wie ktoś może co robę źle?? 

 

Edit::

Treść błędu

error: '_wifi' does not name a type
komentarz zamknięcia: Dzięki za pomoc
komentarz 20 lipca przez Marak123 Dyskutant (9,150 p.)

Znaczy pokazuje błąd w pliku nagłówkowym jak dałem

extern _wifi dataWifi;

A w pliku .cpp

_wifi dataWifi

to zadeklarowało tylko to co jest w main.cpp a to co jest w pliku nagłówkowym z extern to pokazuje błąd does not name a type.

1
komentarz 20 lipca przez Oscar Pasjonat (19,010 p.)

Może nie zaczynaj nazw podkreśleniem, to chyba jest jakoś zarezerwowane.

I ta linijka

#ifndef STRUCTURE

Słówko STRUCTURE wydaje się mało unikalne - #define są globalne, jeśli ktos użył tego słowa w jednym z plików nagłówkowych, które includujesz to się namięsza.

komentarz 20 lipca przez Marak123 Dyskutant (9,150 p.)

Może nie zaczynaj nazw podkreśleniem, to chyba jest jakoś zarezerwowane.

Ok

Ogólnie to zrobiłem nowy plik nadałem mu nazwę struct.h i w #ifndef dałem STRUCT i teraz działa gdy includuje normalnie mi rozpoznaje ze coś takiego istnieje więc był jakiś problem z plikiem może projekt zrobiony coś źle skonfigurował zapis pliku albo tak jak mówisz @Oscar to po prostu ta nazwa STRUCTURE jest już używana albo jakoś zadeklarowana przez kompilator nie wiem. Ale ważne ze działa.

Dzięki za pomoc @Oscar@j23 smileyyes

komentarz 21 lipca przez j23 Mędrzec (164,220 p.)

albo tak jak mówisz @Oscar to po prostu ta nazwa STRUCTURE jest już używana

Dlatego dobrze jest dawać nazwę pliku z rozszerzeniem, np. __STRUCTURE_H__

komentarz 21 lipca przez Marak123 Dyskutant (9,150 p.)
No w sumie to ta

Podobne pytania

+1 głos
0 odpowiedzi 58 wizyt
0 głosów
1 odpowiedź 60 wizyt
pytanie zadane 28 kwietnia w C i C++ przez Marak123 Dyskutant (9,150 p.)
0 głosów
0 odpowiedzi 160 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

84,835 zapytań

133,644 odpowiedzi

296,137 komentarzy

56,080 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...