0

我正在使用 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 的工作原理。谢谢!!

4

0 回答 0