【问题标题】:How to use a C macro / inline function to with a variable function name?如何将 C 宏/内联函数与变量函数名一起使用?
【发布时间】:2013-06-19 00:09:41
【问题描述】:

本质上,由于必要性,我正在模拟基本 C 中的面向对象编程。为了我自己的方便,我想使用宏或内联函数来减少我需要编写的代码量。对于我的 400 多个变量,每个变量都需要一个类似的结构

int x;
int get_x(){
    return x;
}
void set_x(int a){
    x = a;
}

我希望有一些聪明的方法可以把它写成一个宏 oneliner,这样我就可以输入 foo(x) 类型,它会用所有代码替换它。我认为困难在于使用变量x 作为一个字符串,以便它可以在函数标题中使用。

有没有遇到过这种事情的 C 大师?

【问题讨论】:

  • 我认为您需要进一步解释一下您的动机,因为对我来说,使用x 表示值似乎比您上面介绍的简单案例get_x() 更直观。

标签: c oop macros inline-functions


【解决方案1】:
#define MAKE_OOP_VAR(var_type, var_name) \
var_type var_name; \
var_type get_##var_name() { return var_name; } \
void set_##var_name(var_type tmp) { var_name = tmp; } \

MAKE_OOP_VAR(int, x);

没有经过编译测试,但我没想到。

【讨论】:

  • 这绝对是完美的,就像一个魅力。太感谢了。 ##的作用是什么?
  • @James 宏中的连接,以便将变量的名称连接到函数名称而不是将其命名为 get_var_name 它会将其扩展为 get_x
猜你喜欢
  • 2018-11-20
  • 2012-09-07
  • 1970-01-01
  • 2013-07-25
  • 2021-09-24
  • 2011-04-18
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多