Как использовать 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..

Другие вопросы по тегам