неявное объявление функции ‘strtok_r ’[-Wimplicit-function-объявление] несмотря на включение <string.h>

У меня есть следующий код для токенизации строки, содержащей строки, разделенные\n и каждая строка имеет целые числа, разделенные\t:

void string_to_int_array(char file_contents[BUFFER_SIZE << 5], int array[200][51]) {
  char *saveptr1, *saveptr2;
  char *str1, *str2;
  char delimiter1[2] = "\n";
  char delimiter2[2] = " ";
  char line[200];
  char integer[200];
  int j;
  for(j = 1, str1 = file_contents; ; j++, str1 = NULL) {
    line = strtok_r(str1, delimiter1, &saveptr1);

    if (line == NULL) {
      break;
    }


    for (str2 = line; ; str2 = NULL) {
      integer = strtok_r(str2, delimiter2, &saveptr2);
      if (integer == NULL) {
        break;
      }
    }
  }
}

(Включите только соответствующую функцию здесь, полная, если требуется,Вот.)

Тем не менее, когда я пытаюсь скомпилировать этот код с помощью:

gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes file_read.c

Я получаю следующие предупреждения:

file_read.c:49:5: warning: implicit declaration of function ‘strtok_r’ [-Wimplicit-function-declaration]
     line = strtok_r(str1, delimiter1, &saveptr1);
     ^
file_read.c:49:10: error: incompatible types when assigning to type ‘char[200]’ from type ‘int’
     line = strtok_r(str1, delimiter1, &saveptr1);
          ^
file_read.c:59:15: error: incompatible types when assigning to type ‘char[200]’ from type ‘int’
       integer = strtok_r(str2, delimiter2, &saveptr2);
               ^

Строки № 49 и 59 соответствуютstrtok_r вызов.

Как видите, я включилstring.h в моем файле (гдеstrtok_r объявляется), все еще я получаю предупреждение о неявном объявлении дляstrtok_r.

Любое понимание того, как я могу удалить предупреждение, приветствуется.

Я использую gcc 4.8.2 на 64-битном десктопе ubuntu 14.04.

Ответы на вопрос(4)

Ваш ответ на вопрос