在我公司的stdint.h
標題寫着:爲什麼INT64_MIN有不同的定義?爲什麼他們的行爲有所不同?
#define INT64_MIN -9223372036854775808LL
但在我的項目的一些代碼,程序員寫道:
#undef INT64_MIN
#define INT64_MIN (-9223372036854775807LL -1)
然後,他使用這個定義中的代碼。
該項目編譯時沒有警告/錯誤。
當我試圖消除他的定義,並使用默認的,我得到:
error: integer constant is so large that it is unsigned
兩種定義似乎是等價的。
爲什麼一個編譯正常,另一個失敗?
是不是有點嚇人,從一個標準的頭文件中的#define導致錯誤? – fvu
@fvu:沒關係,事實證明問題在於,abelenky的僱主用自己的破解版本取代了標準頭文件(請參閱下面的註釋)。 –
@SteveJessop我在討論中看到了這個看起來像一個漂亮的兔子想法給我。 – fvu