Как использовать printf () без каких-либо библиотек в C? - PullRequest
0 голосов
/ 05 мая 2018

Я программирую микроконтроллер Teensy как часть курса C и пытаюсь определить значение одной из моих целочисленных переменных. У меня есть целочисленная переменная с именем Contrast , которая инициализируется значением константы, определенной как шестнадцатеричное число в начале файла .c:

#define LCD_DEFAULT_CONTRAST    0x3F 
int Contrast = LCD_DEFAULT_CONTRAST;

Я пытаюсь выяснить, как это значение Контраст сохраняется и отображается, если оно отображается как 63 или 0x3F , и являются ли они взаимозаменяемыми. Я пытался использовать:

printf("%d", Contrast);

для распечатки значения Contrast на терминал, и я получил ошибку неявное объявление функции 'printf'. Я думал, что printf() был частью встроенной библиотеки C, поэтому я запутался, почему это не работает.

Может кто-нибудь сказать, пожалуйста, как мне вывести значение этой переменной на экран?

Ответы [ 2 ]

0 голосов

printf() объявлено в заголовке стандартной библиотеки <stdio.h>.

Вы должны #include <stdio.h> использовать printf(). Это библиотечный вызов, очень похожий на все остальные библиотечные вызовы в C ..

0 голосов
/ 05 мая 2018

Ошибка неявного объявления означает, что ваш компилятор не имеет объявления для printf. Если вы также не получаете ошибку компоновщика, компоновщик (компоновка обычно следует за компиляцией, если вы не передаете -c, чтобы отключить ее), вероятно, включит стандартную библиотеку lib, в этом случае вы можете просто решить свое предупреждение, включив stdio.h или менее предпочтительно, объявив int printf(char const*, ...);.

Если у вас нет стандартной библиотеки lib, вам нужно вручную преобразовать целое число в строку, например:

int n = 42;
char buf[20];
char *end = buf+(sizeof(buf)-1), *p = end;
*p--=0;
if(n==0) *p=='0';
else{
    while(n){
        printf("%d\n", n%10);
        *p--=n%10+'0'; 
        n/=10;
    }
    p++;
}

, а затем передайте его в необработанную подпрограмму ввода-вывода вашей системы, для которой вам нужно будет настроить сборку для входа в систему.

Если у вас нет системы, она будет еще более технической, и вы, вероятно, не будете задавать этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...