gpt4 book ai didi

c - 获取母函数 __FILE__

转载 作者:行者123 更新时间:2023-11-30 14:59:55 25 4
gpt4 key购买 nike

我想要的是这样的东西:

./client.out:functionC.c:78: Error blabla <--- Here is my problem

./client.out:client.c:98: Error 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通过参数名称。您认为有可能获得调用该函数的母程序吗?我有一个客户端和一个服务器调用相同的函数,但如果出现错误,我需要知道哪个程序(客户端或服务器)崩溃了。

答案:

使用:extern char *progName;在函数 C.c 和 char *progName; 中在client.c中

最佳答案

是的,您可以在 main.c 文件中执行此操作:

static const char *executable = NULL;

const char *get_main_file()
{
return executable == NULL ? "????" : executable;
}

主要内容:

int main(...)
{
executable = argv[0];
...

并从其他文件中调用get_main_file()。这样,argv[0] 值就会导出到任何地方(也许您想对其进行外观更改,重新设计它以删除完整路径,这可以通过添加最后一个路径的偏移量来轻松完成) executable 的路径分隔符(如果找到),就像 basename 那样)

关于c - 获取母函数 __FILE__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42422693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com