gpt4 book ai didi

c - 获取c中预处理器时间的定义值

转载 作者:行者123 更新时间:2023-11-30 14:31:44 25 4
gpt4 key购买 nike

我想使用宏扩展创建一个定义。装箱的定义应保存其他定义的值。 :)

示例:

#define ONE            1
#define TWO 2
#define MACRO(x, y) ...
...
#define MACRO_1_2 3

我的问题是:如何解析/使用宏扩展中定义的值?

我尝试过使用

#define TEST_MACRO_V2(x, y)      TEST_MACRO_V2_"x"_"y"

,但我收到以下错误:

main.c:18:34: error: ‘TEST_MACRO_V2_’ undeclared (first use in this function) #define TEST_MACRO_V2(x, y) TEST_MACRO_V2_"x"_"y"

我的测试代码:

#include <stdio.h>

#define ONE 1
#define TWO 2

#define TEST_MACRO_V1(x, y) TEST_MACRO_V1_##x##_##y
#define TEST_MACRO_V1_ONE_TWO 3

//#define TEST_MACRO_V2(x, y) TEST_MACRO_V2_##('x')##_##('y') -> this version does not work
#define TEST_MACRO_V2(x, y) TEST_MACRO_V2_"x"_"y"
#define TEST_MACRO_V2_1_2 4

int main()
{
printf("Test Macro V1: %d\n", TEST_MACRO_V1(ONE, TWO));
printf("Test Macro V2: %d\n", TEST_MACRO_V2(ONE, TWO));

return 0;
}

Note: TEST_MACRO_V1 works fine. I need TEST_MACRO_V2.

最佳答案

我在 ideone.com 上尝试过:

#include <stdio.h>

#define ONE 1
#define TWO 2

#define TEST_MACRO_HELPER(x, y) TEST_MACRO_##x##_##y
#define TEST_MACRO(x, y) TEST_MACRO_HELPER(x, y)
#define TEST_MACRO_1_2 4

int main()
{
printf("Test Macro: %d\n", TEST_MACRO(ONE, TWO));
return 0;
}

输出:

Test Macro: 4

关于c - 获取c中预处理器时间的定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141112/

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