IRMP-org / IRMP

Infrared Multi Protocol Decoder
GNU General Public License v3.0
267 stars 43 forks source link

Forward Declare IRMP_DATA #30

Closed Adamcbrz closed 3 years ago

Adamcbrz commented 3 years ago

Bug Report

Arduino Platform

IDE

IR-Protocol

Example to reproduce the issue

Pin(s) used for IR-receive, if not default

25

Version

Current behavior

`typedef struct IRMP_DATA;

class IRTester { IRMP_DATA *data; public: IRTester }`

I am trying to forward declare IRMP_DATA which will be include in my cpp file. But on the ESP32 the struct doesn't have a name so I can not forward declare it. I modify the source irmpsystem.h to include a name on the struct and that allowed me to compile.

Expected behavior

To be able to forward declare the IRMP_DATA struct in my header file.

Error output

^ In file included from C:\Users\user\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/config.h:5:0, from C:\Users\user\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/_ansi.h:16, from C:\Users\user\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/string.h:10, from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpsystem.h:105, from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.h:22, from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:26, from src\IRTester.cpp:6: C:\Users\abrzozowski\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\newlib/sys/features.h:25:8: error: expected unqualified-id before string constant extern "C" { ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.h:22:0, from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:26, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpsystem.h:231:5: error: 'uint8_t' does not name a type uint8_t protocol; // protocol, e.g. NEC_PROTOCOL ^ .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpsystem.h:232:5: error: 'uint16_t' does not name a type uint16_t address; // address ^ .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpsystem.h:233:5: error: 'uint32_t' does not name a type uint32_t command; // command ^ .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpsystem.h:234:5: error: 'uint8_t' does not name a type uint8_t flags; // flags, e.g. repetition Compiling .pio\build\esp32doit-devkit-v1\FrameworkArduino\esp32-hal-adc.c.o ^ .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpsystem.h:235:3: error: conflicting declaration 'typedef struct IRMP_DATA IRMP_DATA' } IRMP_DATA; ^ In file included from src\IRTester.cpp:1:0: Compiling .pio\build\esp32doit-devkit-v1\FrameworkArduino\esp32-hal-bt.c.o src\IRTester.h:1:16: note: previous declaration as 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from src\IRTester.cpp:6:0: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h: In function 'bool irmp_get_data(IRMP_DATA*)': .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:2780:24: error: invalid use of incomplete type 'struct IRMP_DATA' irmp_data_p->protocol = irmp_protocol; ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from src\IRTester.cpp:6:0: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:2781:24: error: invalid use of incomplete type 'struct IRMP_DATA' irmp_data_p->address = irmp_address; ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from src\IRTester.cpp:6:0: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:2782:24: error: invalid use of incomplete type 'struct IRMP_DATA' irmp_data_p->command = irmp_command; ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from src\IRTester.cpp:6:0: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:2783:24: error: invalid use of incomplete type 'struct IRMP_DATA' irmp_data_p->flags = irmp_flags; ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h: In function 'void irmp_result_print(Print*, IRMP_DATA*)': .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:572:52: error: invalid use of incomplete type 'struct IRMP_DATA' aSerial->print(irmp_protocol_names[aIRMPDataPtr->protocol]); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:584:32: error: invalid use of incomplete type 'struct IRMP_DATA' aSerial->print(aIRMPDataPtr->address, HEX); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:586:32: error: invalid use of incomplete type 'struct IRMP_DATA' aSerial->print(aIRMPDataPtr->command, HEX); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:587:21: error: invalid use of incomplete type 'struct IRMP_DATA' if (aIRMPDataPtr->flags & IRMP_FLAG_REPETITION) ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h: In function 'void irmp_result_print(IRMP_DATA*)': .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:616:50: error: invalid use of incomplete type 'struct IRMP_DATA' Serial.print(irmp_protocol_names[aIRMPDataPtr->protocol]); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:628:30: error: invalid use of incomplete type 'struct IRMP_DATA' Serial.print(aIRMPDataPtr->address, HEX); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:630:30: error: invalid use of incomplete type 'struct IRMP_DATA' Serial.print(aIRMPDataPtr->command, HEX); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ In file included from .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmp.c.h:3143:0, from src\IRTester.cpp:6: .pio\libdeps\esp32doit-devkit-v1\IRMP\src/irmpArduinoExt.cpp.h:631:21: error: invalid use of incomplete type 'struct IRMP_DATA' if (aIRMPDataPtr->flags & IRMP_FLAG_REPETITION) ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ src\IRTester.cpp: In constructor 'IRTester::IRTester()': src\IRTester.cpp:10:26: error: invalid use of incomplete type 'struct IRMP_DATA' data = new IRMP_DATA(); ^ In file included from src\IRTester.cpp:1:0: src\IRTester.h:1:16: note: forward declaration of 'struct IRMP_DATA' typedef struct IRMP_DATA; ^ *** [.pio\build\esp32doit-devkit-v1\src\IRTester.cpp.o] Error 1

Additional context