ZHCADC3B February 2019 – October 2023
TI 工具集定义了以下与 stdio.h 库一起使用的常量:
#define _IOFBF 1
#define _IOLBF 2
#define _IONBF 4
#define BUFSIZ 256
#define EOF (-1)
#define FOPEN_MAX
#define FILENAME_MAX
#define TMP_MAX
#define L_tmpnam
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
#define stdin &_ftable[0]
#define stdout &_ftable[1]
#define stderr &_ftable[2]
FOPEN_MAX、FILENAME_MAX、TMP_MAX 和 L_tmpnam 值实际上是最小极大值。该库可以自由地支持更多/更大的值,但必须至少提供指定的值。
由于 TI 工具集将 stdout 和 stderr 定义为 &_ftable[1] 和 &_ftable[2],因此 FILE 的大小对实现来说必须已知。
在 TI 头文件中,stdin、stdout 和 stderr 扩展为数组 _ftable 中的引用。为了成功地与此类文件互连,任何其他实现都需要准确使用该名称来实现 FILE 数组。C28x EABI 没有“兼容模式”(与 ARM EABI 中的模式类似),在这种模式下,stdin、stdout 和 stderr 是链接时符号,而非宏。缺少兼容模式意味着,对于那些需要与直接引用 stdin 的模块互连的链接器,此时需要支持 _ftable。
如果程序不使用 stdin、stdout 或 stderr 宏(或实现为宏且引用上述宏之一的函数),则 FILE 数组没有问题。
通常实现为宏的 C I/O 函数(getc、putc、getchar、putchar)不得内联。
fpos_t 类型定义为 long。