我在使用標準 clang 編譯器(版本 13.0.0)的 macOS Big Sur 上出現編譯錯誤。
我正在嘗試包含 sys/sysmacros.h 以使用 makedev() 函式,令人驚訝的是在蘋果開發者網站上提到了該函式并且應該與 macOS 15.5 兼容
包括 sys/types.h 也會給我一個錯誤,但是 sys/stat.h 有效。遺憾的是,它仍然沒有給我我需要的 makedev()、major() 和 minor() 函式。
makedev的 linux 手冊頁指出 glibc 庫中有一些更改,但據我所知 macOS 不使用 glibc 庫。應該有一種使用 brew 在 macOS 上安裝 glibc 的簡單方法,如此處所述,但我遇到了與此執行緒中提到的相同的錯誤。所以顯然目前沒有正確的方法來做,然后我不確定這是否能解決我的問題。
有人知道這個問題的解決方案嗎?或者有沒有人遇到過類似的問題?
uj5u.com熱心網友回復:
該宏makedev定義在 sys/types.h 中。只需添加#include <sys/types.h>到您的檔案中。sys/types.h 是 Kernel.framework 的頭檔案。您應該將其設定為像clang -framework Kernel ....
您還可以定義這些宏,因為它們在 sys/types.h 中定義:
#define major(x) ((int32_t)(((u_int32_t)(x) >> 24) & 0xff))
#define minor(x) ((int32_t)((x) & 0xffffff))
#define makedev(x, y) ((dev_t)(((x) << 24) | (y)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/343424.html
