如何在c / c ++中为gcc编译器运行可执行文件名

时间:2015-08-17 15:01:17

标签: c++ c gcc

我的目的是在每个平台(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)的代码,以获取正在运行的可执行文件的名称。

1 个答案:

答案 0 :(得分:4)

引用C11标准,第5.1.2.2.1章,

  

如果argc的值大于零,则argv[0]指向的字符串   代表程序名称; argv[0][0]如果是,则为空字符   程序名称不能从主机环境中获得。[...]

因此,在argv[0]上进行空检查后,您可以使用与程序名称相同的内容。

是的,它与平台无关。