我有一个 C
项目。我在 Ubuntu 上的 VisualStudio 中工作。
我需要从文件中读取内容。
我有这个方法:
fp = fopen("path_to_file", "r");
if (fp == NULL)
{
printf("\nERROR : file open failed\n");
return 0;
}
while (fgets(buffer, MAX_NAME_LENGTH, (FILE *)fp))
{
printf("%s\n", buffer);
}
fclose(fp);
if (line)
free(line);
我的文件位于项目的根目录,所以我的问题是 - 有没有一种方法可以设置像这样的文件${project_root}/my_tmp.txt
?
这样 ${project_root}
将类似于一般值。
最佳答案
一种可能的解决方案是利用 VSCode 的任务功能,并使用 -D
选项将项目根路径作为预处理器宏传递给编译器,然后你可以在你的源代码中使用它。
一个示例(有关任务的完整文档,请参阅 here)tasks.json
文件可能如下所示。请注意 args
数组中的 -D
参数。
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "default build option",
"command": "/usr/bin/cc",
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-DPROJECT_ROOT=\"${project_root}\""],
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
然后,在您的 C 源代码中,您可以利用 PROJECT_ROOT
宏来构造要打开的文件名:
fp = fopen(PROJECT_ROOT "/path_to_file", "r");
关于c - 如何在Ubuntu上获取VS项目的文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438720/