我正在编写一个Teensy微控制器作为C课程的一部分,并试图计算出我的一个整数变量的值。我有一个名为 Contrast 的整数变量,它被初始化为在.c文件开头定义为十六进制数的常量值:
#define LCD_DEFAULT_CONTRAST 0x3F
int Contrast = LCD_DEFAULT_CONTRAST;
我正在尝试调查对比度值的存储和显示方式,如果它显示为 63 或 0x3F ,以及它们是否存在是可以互换的。我试着用:
printf("%d", Contrast);
将对比度值打印到终端,我收到错误隐式声明函数'printf'
。我认为printf()
是内置C库的一部分,所以我很困惑为什么这不起作用。
有人可以告诉我如何将此变量的值打印到屏幕上吗?
答案 0 :(得分:4)
隐式声明错误只表示您的编译器没有printf
的声明。除非您也遇到链接器错误,否则链接器(链接通常遵循编译,除非您通过-c
禁用它)可能正在打开标准库,在这种情况下,您可以通过包括简单地解决警告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++;
}
然后将其传递给系统的原始IO例程,您需要设置系统输入程序集。
如果你没有系统,那就更具技术性了,你可能不会问这个问题。
答案 1 :(得分:1)
printf()
在标准库标题<stdio.h>
中声明。
您必须#include <stdio.h>
才能使用printf()
。这是一个库调用,就像C中的所有其他库调用一样。