永发信息网

c语言如何把某个函数名转换为字符串

答案:2  悬赏:70  手机版
解决时间 2021-01-15 23:26
c语言如何把某个函数名转换为字符串
最佳答案
根据编译环境,有如下方式:
1 部分编译器中,支持__FUNCTION__或__func__宏。该宏为编译器定义,值为被调用函数的函数名转换成的字符串。如在func()中调用__FUNCTION__,则该宏的值为"func"。
2 如果编译器不支持上述宏名,那么需要手动添加宏。可以有如下两种方式:
a. 直接定义对应字符串,如
#define FUNC_NAME "func"
字符串中的直接写明。
b. 统一函数转换。利用宏定义的#操作,可以实现标识符向字符串的转换。
#define FUNC_NAME(x) #x
这时调用FUNC_NAME(func)就等效于"func"。
全部回答
#include
typedef int (*Func)();
int func_1(int a);
int func_2(int a);
int func_3(int a);
int func_1(int a){
printf("Func:%s a=%d\n" , __func__,a);
return 0;
}
int func_2(int a){
printf("Func:%s a=%d\n" ,__func__,a);
return 0;
}
int func_3(int a){
printf("Func:%s a=%d\n" ,__func__,a);
return 0;
}
int main(){
int i=0;
Func f[3];
f[0] = func_1;
f[1] = func_2;
f[2] = func_3;
for(i=0;i<3;i++){
f[i](i);
}
return 0;
}
不知道是否能满足你的需求。要注意的是,__func__这个变量是C99的标准,最好在Linux下用GCC进行编译。我是用GCC进行编译,可以顺利读取函数名。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
EXCEL二次筛选问题
不想要的,想买,有人吗
怎样防范各种诈骗行为
红糖810克摆布 是什么意思
手上有七个螺的人要和几个螺的人结婚
现在对日it工资一般多少?
求性价比高的汉服推荐
杭州至惠东高速公路里程多少
单选题人体内细胞外液构成的液体环境称为内环
鼠妇吃什么,怎么养?
美味肉蓉面能干吃吗
iphone4掉水里了,怎么办
武内硬逼蘑菇写的fate完美结局是哪一系列
lg洗衣机怎么使用烘干?
离曲阜多少公里临术
推荐资讯
排萧的音色
老黄历书年龄查询属牛的龄
如何用七巧板拼成T字型?
74LS30与74LS08的区别是什么
鲁迅毫不松驰地奋斗了一生
天山运动中心地址在什么地方,我要处理点事
当a等于多少时,方程(a
fluidsim 怎么画位移-时间图
仙童半导体公司的由来
有印无官什么意思
台风泵业生产的耐酸碱泵浦,为什么价格那么低
请问因为借钱不还我打了他,我陪他五万后,那
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?