size_t,key_t,time_t etc

4

我在C程序中多次遇到“X_t”类型,它们真正的含义是什么?这些定义的位置在哪里?

2个回答

16
_t 后缀表示“类型”,这不是必须使用的规则,只是许多标准库中遵循的约定。它们通常在使用它们的头文件中定义,或者有时在包含这些头文件的头文件中定义。 size_t<stddef.h> 中定义,而 time_t<time.h> 中定义。 key_t 不是标准的 C 类型,因此它可能在其所用库的库头文件中定义。
如果您想确切地知道定义来自哪个头文件,可以运行预处理器。
gcc -E file.c -o file.i

预处理器输出的file.i将会显示所有嵌套的包含文件。然后您可以搜索它以查找定义,然后向上滚动,直到找到指示其来自哪个头文件的注释。


预处理器查找头文件的方法非常有用,谢谢!我只是想知道 "cpp" 和 "gcc -E ..." 是不是一样的? - Pwn
在Linux系统上,“cpp”通常调用g++,这与gcc不同。 - gnud
1
我认为 _t 后缀是由 POSIX 保留用于未来扩展。如果真的是这样,那么通常不建议使用 _t 作为用户定义类型的后缀。 - Inshallah

0

我刚刚用“c size_t”在Google上进行了搜索,this是第一个链接。那个网站上也有time_t的信息。一旦你获得了那些信息,就很容易意识到key_t必须遵循同样的模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接