希望从新手那里得到一个简单的问题...

如果我有定义的变量:

#define LOCK_OUT   0xA00A


我在这样的串行流中使用它:

iprintf("%s Sent to the system. \r\n", LOCK_OUT);


在我的串行终端上,我会看到LOCK_OUT的文本表示形式还是数字表示形式?例如:

“ LOCK_OUT已发送到系统。”

特别是,我有一个循环,用于检查已定义宏的数组,并且我想在输出串行流中使用选定的宏(一旦找到)。所以这将是循环:

int UDPDATA;
for (int i = 0, i < UDP_Size; i++)
{
    if (MACRO_ARRAY[i] == UDPDATA iprintf("%s Sent to system \r\n", MACRO_ARRAY[i]);
}


我希望宏名称发送到串行流,而不是它代表的值。我希望我能正确解释这一点...


“ 0xA00A已发送到系统。”

我正在寻找第一个,不确定是否可能...谢谢!

最佳答案

因为宏是替代,所以您必须执行以下操作:

#include <stdio.h>

#define STRINGIFY(x) #x
#define LOCK_OUT 0xA00A

int main() {
    // %#04x prints 4 hexadecimal places
    printf("%s %#04x Sent to the system. \r\n", STRINGIFY(LOCK_OUT), LOCK_OUT);
    return 0;
}

07-24 09:46
查看更多