[英]Why is C struct tm not as typedef?
我只是出於好奇而想知道為什么在C時間結構中
struct tm
用作此命令,不用於typedef
。 這樣,我總是需要編寫struct tm
來獲得正確的代碼。 許多結構都是“ typedef”的,為什么不這樣呢?
因為當語言為struct標記使用單獨的命名空間時,用不必要的typedef
污染通用命名空間是不禮貌的。 如果您真的希望typedef
隱藏它是struct
的事實,那么您可以輕松地自己提供一個,而不必強加給我們其他人。
許多結構都是“ typedef”的,為什么不這樣呢?
我不知道你為什么這么說; C庫中沒有類型定義的結構。 FILE
是typedef,但不一定是結構。
也許您的意思是其他代碼主體很多。 這是因為某些人(如您自己)出於某種原因認為名稱空間污染是個好主意。 C庫作者沒有。
我認為問題是在C中這種結構就是這樣誕生的!
您可以自由創建聲明tm typedef的包含文件,也可以在代碼中聲明它!
typedef struct tm tm;
或更好(我認為)
typedef struct tm tm_t;
因為C ++與C不同。C++不是C的超集,而只是語言規范。
您可以使用寫在代碼頂部的#define
行來幫助您更快地編寫。
#define TM struct tm
然后,代替struct tm
編寫TM
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.