UNIX C函数中的命名约定(_t和_st)

why*_*why 3 c unix

我注意到有一些名为*****_t或的函数返回类型******_st."_st"和"_t"是什么意思?

Jon*_*ler 7

POSIX保留_t以类型结尾的名称.虽然看到发明自己的类型名称的代码结束是很常见的_t,但这样做很危险 - 您可以运行定义具有相同名称的(不同)类型的POSIX系统.


在libmemcached源代码中,看起来_st后缀用于表示结构类型:

types.h:typedef struct memcached_st memcached_st;
types.h:typedef struct memcached_stat_st memcached_stat_st;
types.h:typedef struct memcached_analysis_st memcached_analysis_st;
types.h:typedef struct memcached_result_st memcached_result_st;
types.h:// All of the flavors of memcache_server_st
types.h:typedef struct memcached_server_st memcached_server_st;
types.h:typedef const struct memcached_server_st *memcached_server_instance_st;
types.h:typedef struct memcached_server_st *memcached_server_list_st;
Run Code Online (Sandbox Code Playgroud)

我没有找到一个函数结束的单个实例_st(但我可能看起来不够努力).