2016-09-15 4 views
1

Я использую Visual Studio 2015, и я пытаюсь использовать strtok_r. По какой-то причине компилятор не распознает его.Strtok_r неразрешенный внешний символ

Вот мой код:

#include <string.h> 
#include <stdlib.h> 
#include <assert.h> 

char** str_split(char* a_str, const char a_delim, int * argc) 
{ 
    ... some other code 
    if (result) 
    { 
    size_t idx = 0; 
    char* saveptr = a_str; 
    char* token = strtok_r(a_str, delim, &saveptr); 
    //char * token; 
    while (token) 
    { 
     assert(idx < count); 
     *(result + idx++) = strdup(token); 
     token = strtok_r(0, delim, &saveptr); 
    } 
    assert(idx == count - 1); 
    *(result + idx) = 0; 
    } 

return result; 

Я следовал этой документации: http://linux.die.net/man/3/strtok_r

устаревшие ли функция? или я делаю глупую ошибку? Спасибо заранее, ребята.

+3

MS не является полностью POSIX совместимыми. Вам необходимо прочитать документацию по [MS documentation] (https://msdn.microsoft.com/en-us/library/2c8d19sb.aspx), а не документацию по Linux, если вы программируете с помощью инструментов MS. – kaylum

+1

Для практических целей 'strtok_r()' в системах POSIX-ish эквивалентно 'strtok_s()' в системах Windows. Эта эквивалентность не всегда работает, но в этом конкретном случае это происходит. –

ответ

7

Личные страницы Linux не предоставляют документацию для платформ Windows. Вы должны будете использовать одну из следующих функций:

strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

[0] https://msdn.microsoft.com/en-us/library/2c8d19sb.aspx

+0

Конечно, проблема заключается в _compiler_ visual-studio-2015, а не в ОС. – chux

+1

Visual Studio находится только на платформе WIndows, поэтому я подумал, что это подразумевается. –

+0

@chux Вы путаете компилятор и стандартную библиотеку. strtok является частью стандартной библиотеки, а не компилятора. В этом случае было бы правильнее сказать ** C реализацию **, которая будет охватывать как компилятор, так и среду выполнения и стандартную библиотеку. – jforberg

Смежные вопросы