在 C 中通过宏减少函数参数的数量
Reducing number of function arguments by macro in C
我有一个关于 C 函数的问题。有没有可能做这样的事情:
#define PRINT_SUM_OF_CONSTS() printSum(10, 5)
void printSum(int a, int b){
print("%d + %d = %d", a, b, a+b);
}
int main(){
void (*pFunc)(void);
pFunc = &PRINT_SUM_OF_CONSTS;
pFunc();
return 0;
}
我需要的是使用带有两个参数的函数,使用宏将参数分配给常量并将其用作不带参数的函数。这有可能吗?
pFunc
是指向函数的指针,不能创建指向带有特定参数的函数调用的指针。
但是,解决方案很简单,不需要宏 - 您只需创建一个包装函数,用所需参数调用目标函数:
#include <stdio.h>
void printSum(int a, int b)
{
printf("%d + %d = %d", a, b, a+b);
}
void printSumConst() { printSum(10, 5) ; }
int main()
{
void (*pFunc)(void) = printSumConst;
pFunc();
return 0;
}
我有一个关于 C 函数的问题。有没有可能做这样的事情:
#define PRINT_SUM_OF_CONSTS() printSum(10, 5)
void printSum(int a, int b){
print("%d + %d = %d", a, b, a+b);
}
int main(){
void (*pFunc)(void);
pFunc = &PRINT_SUM_OF_CONSTS;
pFunc();
return 0;
}
我需要的是使用带有两个参数的函数,使用宏将参数分配给常量并将其用作不带参数的函数。这有可能吗?
pFunc
是指向函数的指针,不能创建指向带有特定参数的函数调用的指针。
但是,解决方案很简单,不需要宏 - 您只需创建一个包装函数,用所需参数调用目标函数:
#include <stdio.h>
void printSum(int a, int b)
{
printf("%d + %d = %d", a, b, a+b);
}
void printSumConst() { printSum(10, 5) ; }
int main()
{
void (*pFunc)(void) = printSumConst;
pFunc();
return 0;
}