如何用C++代碼穩定判斷64位還是32位系統(不使用任何宏定義,或者API)

情景

最近碰到了這個問題,研究一下發現很有趣,如何用C++代碼穩定判斷64位還是32位系統? 看到這個問題有人可能會想,用64位或者32位系統字節數不一樣的基本類型來判斷不可以嗎?答案是YES。很多人會想到long/unsigned long,其實這個是有問題的,無法做到穩定判斷。windows的vs下萬古不變4個字節,其他平臺可能就是4/8字節(32/64位系統)。如何做到穩定判斷?其實用指針計算是最好的,這裏會用到二級指針,可以看看下面這個例子:


		{
			//簡單小例子判斷是64位系統還是32位
			char* test = nullptr;
			char* start = (char*)&test;
			char* end = (char*)(&test + 1);
			//..

			if ( 4 == (end - start))
			{
				cout << "32位" << endl;
			}
			if ( 8 == (end - start))
			{
				cout << "64位" << endl;
			}
		}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章