小编You*_*Kim的帖子

我该如何让#define函数循环?

我有#define带参数的函数,例如DEF_GLOBAL_STRUCT(index),我需要将此宏从1调用到100。最佳方法是什么?我可以使用for循环吗?

我编写了简单的代码来展示我的问题。

#include <stdio.h>
#include <stdint.h>

#define DEF_GLOBAL_STRUCT(index)    uint8_t m_##index##_size=2; \
    uint32_t m_##index##_data1=0; \
    uint32_t m_##index##_data2=0;

DEF_GLOBAL_STRUCT(1)
DEF_GLOBAL_STRUCT(2)
DEF_GLOBAL_STRUCT(3)
// ...
DEF_GLOBAL_STRUCT(100)

int main()
{
    printf("%u\n", m_1_size);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用诸如for循环之类的东西来代替100行的define函数调用。还是有其他解决方案?

如果我拥有代码的所有控制权,则可以定义结构并使用数组进行声明。但是我做不到。我需要使用这种类型的定义函数。那是我的限制。

c macros loops c-preprocessor

1
推荐指数
1
解决办法
122
查看次数

标签 统计

c ×1

c-preprocessor ×1

loops ×1

macros ×1