C 我真的可以做一个像宏这样的函数吗

C 我真的可以做一个像宏这样的函数吗,c,macros,C,Macros,以下是一个例子: #define get_i() i int i; int i2; i2=get_i() 在上面的例子中,^^^get_i()的作用类似于返回某个内容的函数(在本例中是i的值) 上面的^^^^类似于不返回的函数 我的问题是,我是否可以使用宏来创建一个类似宏的函数,它既可以执行某些操作,也可以返回一个对象?下面是一个伪代码: #define increse_i2_and_return_i() i2++; return i; 这可能吗?您可以使用逗号运算符。最后一个操作数的值将

以下是一个例子:

#define get_i() i
int i;
int i2;
i2=get_i()

在上面的例子中,^^^
get_i()
的作用类似于返回某个内容的函数(在本例中是
i
的值)

上面的^^^^类似于不返回的函数

我的问题是,我是否可以使用宏来创建一个类似宏的函数,它既可以执行某些操作,也可以返回一个对象?下面是一个伪代码:

#define increse_i2_and_return_i()  i2++; return i;

这可能吗?

您可以使用逗号运算符。最后一个操作数的值将是整个表达式的值

#define increse_i2_and_return_i() (i2++, i)

这个技巧的缺点是不能在这样的宏中创建临时变量。

可以使用逗号运算符。最后一个操作数的值将是整个表达式的值

#define increse_i2_and_return_i() (i2++, i)

这个技巧的缺点是不能在这样的宏中创建临时变量。

使用逗号运算符。但更好的是,告诉我们您试图实现什么(而不是如何)使用逗号运算符。但更好的是,告诉我们您想要完成什么(而不是如何完成),我将把变量作为参数传递。这正是我所说的;)我将把变量作为参数传递。这正是我所说的;)