【发布时间】:2017-07-14 08:15:42
【问题描述】:
我想要的是这样的:
./client.out:functionC.c:78: Error blabla
./client.out:client.c:98: 错误 blabla
这是我的示例函数
/* client.c */
int main(int argc, char *argv[]) {
if(functionCalled() == -1){
fprintf(stderr, "%s:%s:%d: Error blabla\n", argv[0], __FILE__, __LINE__);
}
return 0;
}
/* functionC.c */
int functionCalled(){
fprintf(stderr, "%s:%s:%d: Error blabla\n", ?????, __FILE__, __LINE__);
return -1;
}
显然我无法通过参数发送main.c 名称。你认为有可能得到调用该函数的母程序吗?我有一个客户端和一个服务器调用相同的函数,但如果出现错误,我需要知道哪个程序(客户端或服务器)崩溃了。
回答:
在functionC.c中使用:extern char *progName;,在client.c中使用char *progName;
【问题讨论】:
-
我不想得到导致问题的函数,但是
mainProgram.out:program.c:line -
为什么你不能将 argv[0] 传递给你的函数?它和其他变量一样是一个变量
-
@Jean-FrançoisFabre 我试过你的 PRETTY_FUNCTION 和你给出的答案,但它没有返回我需要的东西。我编辑了我的帖子,你会明白的
-
@ChrisTurner 因为在我的应用程序中我无法通过函数输入我想要的内容
-
不确定我是否理解正确,但如果您想显示命令名称,只需创建静态/全局变量并在 main.xml 中初始化它。类似
char* progName = NULL; int main(...) { progName=argv[0]; ...}
标签: c