2015-09-14 2 views
-1

Редактировать: уточнить, так как кто-то попытался отредактировать это сообщение, я имею в виду, что vim отображает предупреждение, gcc нет.Vim отображает предупреждение, хотя код компилируется правильно

У меня есть программа, которая компилируется не правильно предупреждений со следующей командной строкой:

gcc -o stetest -pedantic -Wall strerrortest.c 

Однако, ВИМ предупреждает меня, что у меня есть неявное объявление strerror на линии, указанной в приведенной ниже MWE. Это что-то, о чем я должен беспокоиться, или тот факт, что он правильно компилируется? Должен ли я писать прототип, чтобы предупредить его?

Это предупреждение

implicit declaration of function 'strerror' [-Wimplicit-function-declaration] 
format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=] 

Источник ниже:

// strerrortest.c 
#define _GNU_SOURCE 
#include <stdio.h> 
#include <string.h> 

int 
main(int argc, char ** argv) 
{ 
    fprintf(stderr,"%s\n",strerror(1)); 
     // Vim complains about an implicit declaration of strerror here. 
    return 0; 
} 

Система Ubuntu 15.04.

+0

ВИМ предупреждает вас ?? показать предупреждение plz .. – Haris

+0

@Haris, добавлено предупреждение. – jgon

+0

Его компиляция без каких-либо предупреждений в моей машине, вы компилируете это в Linux-машине? – Haris

ответ

-4

просто заменить с вами кодом fprintf(stderr,"%d\n",strerror(1));

+3

['strerror'] (http://port70.net/~nsz/c/c11/n1570.html#7.24.6.2) возвращает' char * '. – Olaf

-2

проблема является способ вашего вызова компилятора GCC.

Команда Vim должна быть:

!gcc -c strerrortest.c -o strerrortest.o -I/usr/include 

Однако несколько частей, которые могут быть устранены посредством соответствующих записей в файле vim.ini

+0

Почему голос? Это правильная команда командной строки vim для компиляции файла. Ссылка на файл в исполняемый файл несколько отличается, но вопрос был в компиляции – user3629249

+0

Стандарт gcc для цели должен иметь интегрированные пути. Он работает на любой нормальной платформе. И как писал OP, на самом деле ** делает ** при компиляции из оболочки. – Olaf

+0

OP ничего не говорил о вызове gcc как команды vim. – juanchopanza

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