Преобразование строки в long long

Я использовал решение, данное в

Тревожное преобразование строки в long long в C

преобразовать строку в long long в C. Я использую Microsoft Visual Studio 2012.

При компиляции я получаю ошибку

LNK2019: не восстановленный внешний символ _+ атолл, на который ссылается функция _main.

#include <stdio.h>
#include <stdlib.h>  


int main(void) {
    char s[30] = { "115" };
    long long t = atoll(s);

    printf("Value is: %lld\n", t);

    return 0;
}

2 ответа

Решение

atoll устарела и, похоже, не включена в новейшую версию VS. использование strtoll

long long t = strtoll(s, NULL, 10);

Если это недоступно либо посмотрите, если _strtoi64 есть (имеет такой же прототип).

Функция atoll была введена в стандартный язык C в C99.

К сожалению, Microsoft долгое время игнорировала C99 и не реализовала ни одной из его функций в компиляторе Visual Studio C, вплоть до VS 2012 года.

Это изменилось с VS 2013, который добавил значительную, но не полную поддержку C99.

Возможно, самый простой вариант - использовать _strtoi64, который должен быть доступен, но имейте в виду, что это специфическая функция Microsoft, поэтому, вероятно, она не будет работать, если вы попытаетесь скомпилировать код в другом месте.

Другие вопросы по тегам