这是本文档旧的修订版!
stdint.h(stdint关键字):
Q:为什么要有Stdint来划分(别名)C语言的标准数据类型? A:一、解决跨平台和编译器的不一致性,提供明确的位宽和表示范围,提高代码可维护性。 stdint.h提供了一组具有固定宽度的整数类型,这些类型的名称和大小是标准的,因此它们在不同的编译器和平台上具有一致性。 这种明确的位宽和表示范围有助于程序员在编写程序时能够准确地指定所使用的整数类型的大小和范围。 程序员可以编写出更加精确和可移植的代码。这些类型名称具有明确的含义,能够清晰地表达程序员的意图。 另外,别名有助于消除歧义。比如char类型意思是一个字符,但是在单片机领域char往往指的是一个8位有符号数字。
其原理是使用typedef关键字对C语言基本数据类型关键字设置别名。 typedef int8_t char; typedef uint8_t unsigned char; typedef uint16_t unsigned short; ……
宏定义:
宏替换是简单的文本替换:预处理器不会检查宏替换后的代码是否合法或有效,它只是简单地将宏名称替换为相应的替换文本。 宏定义没有存储期,因为它只是文本替换,不涉及变量的存储。 宏定义的作用域是全局的(除非在文件内部使用#undef来取消定义),但可以通过条件编译来限制其作用范围。