我正在使用 VS Code 做一个已经提供了很多代码的项目。我正在努力了解这一切是如何运作的。
通常,“转到定义”和 control+shift+f 都不会返回任何结果。我希望有效的代码结构和函数在文件中的某个位置有一个位置,例如标题或宏。
例如在下面的代码(只是一个随机片段)中,使用 control+shift+f 搜索或“转到定义”都找不到addrinfo
结构或getaddrinfo()
函数的任何结果(我想知道为什么):
int get_listener_socket(char *port)
{
int sockfd;
struct addrinfo hints, *servinfo, *p;
int yes = 1;
int rv;
// This block of code looks at the local network interfaces and
// tries to find some that match our requirements (namely either
// IPv4 or IPv6 (AF_UNSPEC) and TCP (SOCK_STREAM) and use any IP on
// this machine (AI_PASSIVE).
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE; // use my IP
if ((rv = getaddrinfo(NULL, port, &hints, &servinfo)) != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
return -1;
}
注意:我打开了项目的整个工作区文件夹,所以一切都在那里,并且我安装了 C/C++ 扩展。我在 Windows 上,但我使用 GCC 和 WSL 进行编译。
我的理论是,这些结构可能作为标准的一部分嵌入到编译器中,在这种情况下,它们不在文件内,而是在编译器二进制文件内,并且不可能被发现。学习这将帮助我更好地使用工具,了解它们的工作原理以及 C 的工作原理。谢谢!!