是否可以在同一个 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 文件的默认模式将发生变化。
您的解决方案不是最佳的是您必须定义两倍的值 17
和 18
。万一你必须修改它会很痛苦,引入错位风险。
这不完全是您要求的前向声明,但它甚至可以是更简洁的解决方案。如果为值再添加两个定义会怎样?
// 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;
通过这种方式,您还可以摆脱那些 #undef
s。
与标题相同:我想转发声明一个整数,这样我就可以在定义它之前使用它,但不同之处在于它需要发生在完全相同的 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 文件的默认模式将发生变化。
您的解决方案不是最佳的是您必须定义两倍的值 17
和 18
。万一你必须修改它会很痛苦,引入错位风险。
这不完全是您要求的前向声明,但它甚至可以是更简洁的解决方案。如果为值再添加两个定义会怎样?
// 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;
通过这种方式,您还可以摆脱那些 #undef
s。