在提到程序名称时,最佳做法是什么?我见过:
#define PROGRAM_NAME "myprog"
printf("this is %s\n", PROGRAM_NAME);
Run Code Online (Sandbox Code Playgroud)
以及:
printf("this is %s\n", argv[0]);
Run Code Online (Sandbox Code Playgroud)
我知道,第二种方法将给予我,./myprog而不是myprog在没有调用程序时$PATH,第一种方法将保证程序名称的一致性.
但还有什么能让一种方法优于另一种吗?
当您有多个链接时,第二种方法更优越.在*nix系统中,有时行为取决于您如何调用程序.如此难以编写程序名称显然是一个问题 - 它永远无法检查.
我试图充分利用这两个方面:
char const * program_name;
int main(int argc, char **argv) {
program_name = argv[0];
//...
}
Run Code Online (Sandbox Code Playgroud)
如果您需要program_name在其他文件中可用,您可以这样声明:
extern char const * program_name;
Run Code Online (Sandbox Code Playgroud)
我声明"char const*"因为我希望它是一个指向const数据的指针.我不确定我是否做对了.