2015-06-11 3 views
2

Итак, я только начинаю изучать C, а после создания CodeBlocks с компилятором SmallDevice C я начал работать над некоторыми из программ в книге, которую я изучаю. он продолжает возвращать эту ошибку. Вот код:Простые программы C возвращают слишком много параметров error

#include <stdio.h> 
int main() 
{ 
    int num1, num2, sum; 
    printf("Enter two integers: \n"); 
    scanf("%d %d",&num1,&num2); 
    sum=num1+num2; 
    printf("Sum: %d",sum); 
    return(0); 
} 

Ошибка это дает мне это

Warning 112: Function 'scanf' implicit declaration 
error 101: too many parameters 

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

+0

какой компилятор вы используете? [код кажется прекрасным] (http://ideone.com/4L0psx). –

+0

Компилятор Small Device C – Justc25

+4

Похоже, что ваш компилятор предназначен для небольших встроенных устройств и не имеет функции scanf. –

ответ

2

Да, это проблема с вашим компилятором и/или вашей установкой. Код не имеет синтаксических ошибок.

[email protected]:~$ pico Justc25_main.c 
[email protected]:~$ gcc Justc25_main.c 
[email protected]:~$ 

Как Вернер Хенце заявил: «Похоже, Small Device C компилятор для небольших встроенных устройств и не поставляются с функцией Scanf.».

+0

Это не проблема компилятора. Компилятор SDCC предназначен для кучи встроенных устройств, а реализация scanf для стандартного ввода зависит от оборудования. Разработчики SDCC хотят поддерживать независимость своего компилятора, поэтому scanf не присутствует. – ronaldo

+0

Isee @ronaldo, спасибо. – gsamaras

2

Нет, это не проблема с вашим компилятором.

Warning 112: Function 'scanf' implicit declaration 

Это означает, что прототип scanf не доступен в нормальном месте: stdio.h. Поскольку компилятор не может найти прототип, он создает один с параметрами по умолчанию и выдает предупреждение. Хотя это предупреждение, а не ошибка, это все равно может закончиться, если связывается с.

Скорее всего, его стандартная библиотека не содержит scanf.

+0

OFF_TOPIC: Ваш лучший ответ хороший, я свяжу его с моим главным вопросом. Благодарю. – gsamaras

+1

Вы имели в виду 'scanf'? –

0

@jongware является правильным. SDCC не имеет реализации scanf, и это является причиной вашего предупреждения 112 и последующей ошибки 101. Вы можете проверить это самостоятельно, ища scanf в заголовке stdio.h и в полном исходном коде.

В основном разработчики SDCC хотят, чтобы их компилятор был независимым от платформы, а для реализации scanf для встроенных устройств требуется знание конкретных аппаратных средств для каждой платформы. Например, реализация scanf для CPC Amstrad отличается от реализации для MSX, даже имея один и тот же процессор Z80.

В зависимости от платформы, на которую вы нацеливаетесь, вы можете найти возможности scanf. Другим вариантом будет внедрение getchar для вашей платформы, а затем использование get.

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