我的目的是在每个平台(Windows,Mac Os x,Linux)中使用相同的代码获取正在运行的可执行文件的名称。
每个平台都有单独的代码来查找可执行文件的名称。
在Windows中,有In member function 'void A::fun(B)':
6 13 [Error] 'obj' has incomplete type
2 7 [Error] forward declaration of 'class B'
函数来获取可执行文件的名称,但它适用于Visual Studio。
我还使用GetModuleFileName()
来获取当前可执行文件的路径。
我正在使用argv[0]
编译器,我需要生成适用于所有平台(Windows,Mac Os x,Linux)的代码,以获取正在运行的可执行文件的名称。
答案 0 :(得分:4)
引用C11
标准,第5.1.2.2.1章,
如果argc的值大于零,则
argv[0]
指向的字符串 代表程序名称;argv[0][0]
如果是,则为空字符 程序名称不能从主机环境中获得。[...]
因此,在argv[0]
上进行空检查后,您可以使用与程序名称相同的内容。
是的,它与平台无关。