我在我的项目中使用了一个具有以下定义的头文件:
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
#define __I volatile /*!< Defines 'read only' permissions*/
#else
#define __I volatile const /*!< Defines 'read only' permissions*/
#endif
在__I
另一个头文件中使用如下:
typedef struct {
// more members before
__I uint32_t CR; /*!< GPIO Commit*/
// more members after
} GPIOA_Type;
#define GPIOF_BASE 0x40025000UL
#define GPIOF ((GPIOA_Type *) GPIOF_BASE)
我的问题是为什么要__I
在 C 中使用 const 而不是在 C++ 中?你仍然可以修改 CR 指向的值,因为你有地址,但我只是好奇为什么定义__I
不同。
对于任何对它的用途或来源感兴趣的人,__I
定义来自 IAR Embedded Workbench ARM for Cortex-M4,结构来自德州仪器 LM4F120H5QR CMSIS 文件。