當你想要使用int32_t
或memcpy
時,爲什麼gcc48和clang之間有不同的包含?爲什麼使用clang和gcc,當你想使用`int32_t`或`memcpy`時你的include是不同的?
時使用gcc,你包括<iostream>
後,你還應該包括<stdint.h>
和<string.h>
使用int32t
和memcopy
時使用鐺,你只需要包括<iostream>
,您可以自由使用int32t
和memcopy
,stdint。 h和string.h自動包含在內。
這是爲什麼? 我可以運行clang作爲gcc行爲嗎?
我使用Mac OS。
你不需要*''使用'int32_t'或'memcpy'編譯器。你*應該*包含''和''這兩個編譯器。行爲上的差異是因爲標準頭允許包括其他頭,包括其他標準頭。 clang必須包含其他2個頭文件,而gcc不包含,但不能依賴任何一個編譯器的當前行爲。 –
Praetorian
當我們使用gcc並且包括時,我們需要包括來使用memcpy,但是鏗鏘不需要。 –
frogcjn
你對這個未成年人的事情感到har's不安。如果你打算使用'int32_t'和'memcpy',你的代碼將不會是可移植的,除非你同時包含'stdint.h'和'string.h'。擔心這一點,而不用擔心如何讓一個編譯器像另一個編譯器那樣工作。如果你真的不關心編寫正確的代碼,你應該做的是查找標準中列出的所有標準頭文件的名稱,創建自己的頭文件,比如'icanhazallstdheaderz',包括你在頭文件中找到的頭文件的名稱它。現在包含一個文件,所有編譯器的行爲都相同。 – Praetorian