在預處理過程中,是否有跨平臺的方式來確定ptrdiff_t
是否與long
或long long
相同?跨平臺版本的__PTRDIFF_TYPE__
我知道__PTRDIFF_TYPE__
應該給gcc/g ++類型,但它似乎沒有在VC/VC++ for Windows中定義。有沒有比以下更好的方法?
#ifndef __PTRDIFF_TYPE__
# if _WIN64
# define __PTRDIFF_TYPE__ long long
# else
# define __PTRDIFF_TYPE__ long
# endif
#endif
如果在預處理過程中不可行,是否有編譯時間的方法?我正在尋找非C++ 11解決方案,但如果您有一個非常好的現代解決方案,請隨時分享!
爲什麼你需要知道?在標準庫中定義'ptrdiff_t'的一點是,你不必關心它是如何定義的。 –
我試圖將一個Python2'PyIntObject'轉換爲'ptrdiff_t',並且有不同的方法將它轉換爲'long'和'long long'。我想從技術上講,漫長的方法總是會起作用,但是它並不是那麼幹淨,因爲Python在內部長期存儲這個值。 – Alec
請將該信息添加到問題中。您有[XY問題](http://meta.stackexchange.com/q/66377/167210)。您需要將一個'PyIntObject'轉換爲'ptrdiff_t',但不是問這個問題,而是問如何確定'ptrdiff_t'使用哪種類型。 (順便說一句,'ptrdiff_t'不一定是'long'或'long long',但它可能是任何支持Python的平臺上的其中一個。) –