Как использовать printf() без каких-либо библиотек в C?
Я программирую микроконтроллер Teensy как часть курса C и пытаюсь определить значение одной из моих целочисленных переменных. У меня есть целочисленная переменная с именем Contrast, которая инициализируется значением константы, определенной как шестнадцатеричное число в начале файла.c:
#define LCD_DEFAULT_CONTRAST 0x3F
int Contrast = LCD_DEFAULT_CONTRAST;
Я пытаюсь выяснить, как хранится и отображается это значение контрастности, отображается ли оно как 63 или 0x3F и являются ли они взаимозаменяемыми. Я пытался использовать:
printf("%d", Contrast);
распечатать значение Contrast на терминал, и я получил ошибку неявного объявления функции'printf'
, я думал printf()
был частью встроенной библиотеки C, поэтому я запутался, почему это не работает.
Может кто-нибудь сказать, пожалуйста, как я выводю значение этой переменной на экран?
2 ответа
Ошибка неявного объявления означает, что ваш компилятор не имеет объявления для 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++;
}
и затем передайте его в необработанную подпрограмму ввода-вывода вашей системы, для которой вам нужно будет настроить сборку для входа в систему.
Если у вас нет системы, она будет еще более технической, и вы, вероятно, не будете задавать этот вопрос.
printf()
объявлен в заголовке стандартной библиотеки <stdio.h>
,
Ты должен #include <stdio.h>
использовать printf()
, Это библиотечный вызов, как и все другие библиотечные вызовы в C..