Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在Linux中获取源文件目录_C++_Linux_Clion - Fatal编程技术网

C++ C++;在Linux中获取源文件目录

C++ C++;在Linux中获取源文件目录,c++,linux,clion,C++,Linux,Clion,这个问题被问了很多次,我都提到过,但我需要一点不同 我使用C++的MacBook > cOnide(IDE) 我的程序文件位置 /Users/Kandarp/ClionProjects/SimulationParser/main.cpp 当我使用下面的函数获取当前目录时,它给出了不同的文件(我认为编译和执行文件的实际路径) 答案如下: /Users/Kandarp/Library/Caches/CLion2016.2/cmake/generated/SimulationParser-50b8dc

这个问题被问了很多次,我都提到过,但我需要一点不同

我使用C++的MacBook > cOnide(IDE) 我的程序文件位置
/Users/Kandarp/ClionProjects/SimulationParser/main.cpp

当我使用下面的函数获取当前目录时,它给出了不同的文件(我认为编译和执行文件的实际路径)

答案如下:
/Users/Kandarp/Library/Caches/CLion2016.2/cmake/generated/SimulationParser-50b8dc0e/50b8dc0e/Debug


但我需要.cpp文件所在的路径。我做错了什么?
请帮助

您要做的是使用宏,然后使用基本标记来提取目录名


您的方法不起作用,因为在执行过程中,当前目录是二进制文件的目录,而不是编译单元的目录。

您没有做错什么

getcwd()
提供执行进程的当前目录

当你指示你使用的任何工具来构建C++代码来运行它时,它只是从那个目录运行进程。

< C++中没有任何东西告诉应用程序源代码的位置。


如果您需要应用程序知道其源代码所在的位置,则需要将其作为参数传递给
main()
,或将其放入应用程序读取的某个配置文件中,或任何类似方法。

感谢您的响应。我在C++环境中有点新,你能给我一些可执行的例子吗?C++是一种用于真实程序的语言——可以在全世界一百万台计算机上运行的程序。为什么运行在客户计算机上的程序需要开发人员机器上的.cpp文件的路径?C++编译器需要这个路径,链接器需要对象文件的路径,然后不再需要这些路径。“我需要路径。为何如果您构建orogram,然后将可执行文件复制到另一台机器上,会发生什么?你还需要开发计算机上的路径吗。移动可执行文件后,我将不需要开发人员机器的路径。我是需要的,所以我误解了这个概念。
string ExePath() {
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
    fprintf(stdout, "Current working dir: %s\n", cwd);
    return cwd;
} else {
    perror("getcwd() error");
    return 0;
}}