是否可以在同一个 header 中转发声明一个 static const int?

Is it possible to forward declare a static const int in the same header?

与标题相同:我想转发声明一个整数,这样我就可以在定义它之前使用它,但不同之处在于它需要发生在完全相同的 header 文件中。

我的代码如下所示:

//Embedded system header file for pins and UART.

#if peripheral
#define P4_2 18
#define P4_3 17

static const int AUX_UARTRXD = P4_2;    /* Receive  Data (RXD) at P4.2 */
static const int AUX_UARTTXD = P4_3;    /* Transmit Data (TXD) at P4.3 */

#undef P4_2
#undef P4_3
#endif

static const int P4_2 = 18;
static const int P4_3 = 17;

我真的很想有一个符号化的方式来初始化AUX_UARTRXD但是我的解决方案真的很丑

移动声明是一种选择,但这意味着 header 文件的默认模式将发生变化。

您的解决方案不是最佳的是您必须定义两倍的值 1718。万一你必须修改它会很痛苦,引入错位风险

这不完全是您要求的前向声明,但它甚至可以是更简洁的解决方案。如果为值再添加两个定义会怎样?

// Outside #if peripheral
#define P4_2_VAL 18
#define P4_3_VAL 17

#if peripheral
static const int AUX_UARTRXD = P4_2_VAL;    /* Receive  Data (RXD) at P4.2 */
static const int AUX_UARTTXD = P4_3_VAL;    /* Transmit Data (TXD) at P4.3 */
#endif

static const int P4_2 = P4_2_VAL;
static const int P4_3 = P4_3_VAL;

通过这种方式,您还可以摆脱那些 #undefs。