我正在学习 C,通常我在 Ubuntu 中使用 VS Code 进行编码。为了方便起见,我试图将我的学习材料迁移到 Windows,我的许多其他工作都在 Windows 上进行,因此我安装了 WSL 2 及其发行版 Ubuntu 18.04 LTS。安装适用于 Windows 的 VS Code 及其远程扩展以与 WSL 配合使用后,我在 VS Code 中启动一个新的 WSL 会话,使用 IntelliSense 安装 C/C++ 扩展,然后编写一个简单的程序,如下所示,仅用于演示:
#include <signal.h>
int main()
{
kill(-1, SIGKILL);
}
VS Code 的问题在于,程序编译时,其 IntelliSense 无法检测标头kill
中的函数signal.h
。通过进一步调查头文件,我发现以下部分变暗了
#ifdef __USE_POSIX
extern int kill (__pid_t __pid, int __sig) __THROW;
#endif /* Use POSIX. */
以及其他__USE_POSIX
被检查的部分,包括但不限于siginfo_t
, struct sigaction
。
有没有办法让 VS Code 识别这些宏/变量以启用 IntelliSense 的帮助?
答案1
您可以#define __USE_POSIX
在上面添加包含相关标头的位置,或者如果您想将其定义为编译器参数(可能通过标志-D
或通过 CMake 或其他方式),该文件.vscode/c_cpp_properties.json
允许您指定使用哪些标志,例如所以:
"configurations": [{
"defines":["__USE_POSIX"]
}]
看https://github.com/Microsoft/vscode-cpptools/issues/304有关此功能的更多信息。