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

我定义了一个函数数组,后来会需要输出数组里每个函数的名字,有什么方法能获取函数名到字符串吗?... 我定义了一个函数数组,后来会需要输出数组里每个函数的名字,有什么方法能获取函数名到字符串吗? 展开
 我来答
风若远去何人留
2015-10-10 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450135
专业C/C++软件开发

向TA提问 私信TA
展开全部
根据编译环境,有如下方式:
1 部分编译器中,支持__FUNCTION__或__func__宏。该宏为编译器定义,值为被调用函数的函数名转换成的字符串。如在func()中调用__FUNCTION__,则该宏的值为"func"。
2 如果编译器不支持上述宏名,那么需要手动添加宏。可以有如下两种方式:
a. 直接定义对应字符串,如
#define FUNC_NAME "func"
字符串中的直接写明。
b. 统一函数转换。利用宏定义的#操作,可以实现标识符向字符串的转换。
#define FUNC_NAME(x) #x
这时调用FUNC_NAME(func)就等效于"func"。
百度网友7d13e11
2012-12-04 · 超过12用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:34.9万
展开全部
#include<stdio.h>
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进行编译,可以顺利读取函数名。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式