Проблема:
При спробі скомпілювати прошивку для STM32-мікроконтролера ви бачите повідомлення про помилку компілятора на кшталт
stm32_declspec_error.cpp
myheader.h:23:12: error: expected constructor, destructor, or type conversion before ‘(’ token
23 | __declspec(dllexport) int myfunc(Рішення
Ми раніше досліджували ту саму проблему для Linux-платформ.
__declspec(dllexport) — це специфічна для Windows функція, недоступна на платформах, відмінних від Windows, таких як ARM embedded API platform (наприклад, STM32). Щоб виправити це сумісним способом як з Windows, так і зі STM32, додайте наступний код або в заголовок, який включається у кожен файл, що містить __declspec(dllexport), або додайте його у кожен файл, де виникає помилка:
declspec_compat.h
#ifdef __ARM_EABI__
#define __declspec(v)
#endifЦе фактично ігноруватиме будь-який виклик __declspec() на рівні препроцесора.
Використовуючи __ARM_EABI__ специфічно, визначення не спрацює для ARM-платформ для Windows.
Дивіться схожі статті за категоріями:
C/C++ Помилки GCC STM32
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow