gpt4 book ai didi

c-preprocessor - C 预处理器,将宏的结果字符串化

转载 作者:行者123 更新时间:2023-12-03 01:47:56 24 4
gpt4 key购买 nike

我想将宏扩展的结果字符串化。

我尝试过以下方法:

#define QUOTE(str) #str
#define TEST thisisatest
#define TESTE QUOTE(TEST)

TESTE 扩展为:“TEST”,而我正在尝试获取“thisisatest”。我知道这是预处理器的正确行为,但是任何人都可以帮助我找到实现另一个的方法吗?

Using TESTE #TEST is not valid
Using TESTE QUOTE(thisisatest) is not what I'm trying to do

最佳答案

像这样:

#include <stdio.h>

#define QUOTE(str) #str
#define EXPAND_AND_QUOTE(str) QUOTE(str)
#define TEST thisisatest
#define TESTE EXPAND_AND_QUOTE(TEST)

int main() {
printf(TESTE);
}

原因是当宏参数被替换到宏体中时,它们会被扩展除非它们与该宏中的 # 或 ## 预处理器运算符一起出现。所以,str (代码中的值 TEST )不会在 QUOTE 中扩展,但它在 EXPAND_AND_QUOTE 中展开.

关于c-preprocessor - C 预处理器,将宏的结果字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com