Здравствуйте.
Ситуация такая: Есть желание использовать совместно в одном проекте scmRTOS и CMSIS для Cortex M3. scmRTOS написана на C++. Библиотека CMSIS написана на С. В этой библиотеке используются анонимные структуры, например:
/*------------- General Purpose Input/Output (GPIO) --------------------------*/ /** @brief General Purpose Input/Output (GPIO) register structure definition */ typedef struct { union { __IO uint32_t FIODIR; struct { __IO uint16_t FIODIRL; __IO uint16_t FIODIRH; }; struct { __IO uint8_t FIODIR0; __IO uint8_t FIODIR1; __IO uint8_t FIODIR2; __IO uint8_t FIODIR3; }; }; ... } LPC_GPIO_TypeDef;
Анонимные структуры запрещены в C++, при компиляции вылезает куча предупреждений: "warning: ISO C++ prohibits anonymous structs [-pedantic]". В исходниках CMSIS, конечно, есть развязки:
#if defined ( __CC_ARM ) #pragma anon_unions #endif
Но компилятор игнорирует прагму: "warning: ignoring #pragma anon_unions [-Wunknown-pragmas]".
Как мне заставить проект компилироваться корректно, не меняя исходников CMSIS?
Использую: Eclipse GCC toolchain от человека с ником Klen make от человека с ником АНТОХА scmRTOS (3.10) CMSIS (lpc1768 release 26 July 2010)
|