Может кто-нибудь помочь мне понять, почему VS Code отказывается признать getline как функцию? - PullRequest
0 голосов
/ 24 мая 2019

В настоящее время я использую VS Code с установленным minGW. Я пытаюсь использовать getline (), но независимо от того, какие библиотеки я включаю, stdlib.h, string.h и т. Д., Это просто говорит мне, что getline не была определена.

Я был уверен, что это должно быть частью string.h, как обычно, но я просто не могу понять это. Часто ли это часть другой библиотеки, о которой я просто не знаю?

Я вставил фрагмент кода ниже, но код вроде не имеет значения, так как я просто пытаюсь заставить getline работать.

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include "gameCharacters.h"
#include "colors.h"
#include "technicalDefinitions.h"

void printTitleScreen()
{

    char *line = NULL;
    size_t line_Buffer_Size = 'a';
    int count = 0;

    FILE *titleScreenFile;
    titleScreenFile = fopen("ASSETS/titleScreen.dat", "r");

    while (count < ARRAYMAX)
    {

        getline(&line, &line_Buffer_Size, *titleScreenFile);

        for(int i = 0; i < strlen(line) - 1; i++)
        {

            if (line[i] == 'G') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), GREENBLOCKCOLOR);
            else if (line[i] == 'C') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), CYANBLOCKCOLOR);
            else if (line[i] == 'B') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BLUEBLOCKCOLOR);
            else if (line[i] == 'P') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), PUKEBLOCKCOLOR);
            else if (line[i] == 'Y') SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOWBLOCKCOLOR);

            printf("%c", BLOCKCHARACTER);

        }

        printf("\n");

    }

}

Как я уже сказал, компилятор просто говорит мне, что getline не был объявлен в этой области.

Я новичок в этом сайте, поэтому я не совсем уверен, могу ли я публиковать скриншоты, но могу предоставить некоторые, если это поможет.

1 Ответ

1 голос
/ 24 мая 2019

Простой: getline - это нестандартная функция, которая не переносима.Его нет ни в одном из стандартных заголовков, потому что это не стандартная функция.

(POSIX имеет очень плохую привычку вставлять нестандартную хрень в стандартные заголовки.)

...