本文目錄一覽:
C語言 怎麼區分當前系統是32位還是64位?
32位和64位指的是操作系統的位數,映射到C語言中,最直觀的就是指針類型佔用的位元組數。
1 32位系統:
地址佔32位,所以指針類型同樣佔32位,即4位元組。
2 64位系統:
地址佔64位,所以指針類型同樣佔64位,即8位元組。
於是,只需要判斷任意一個指針的sizeof值,即可獲取到位數。
如
int main()
{
int bits= sizeof(char *);
if(bits == 4) printf(“32位\n”);
else if(bits == 8) printf(“64位\n”);
else printf(“others, bits = %d\n”, bits);
}
在c語言中如何判斷當前是什麼類型的操作系統
如何判斷當前是什麼操作系統?
#if defined(_AIX) // IBM AIX
… …
#endif
#if defined(__sun) // SUN OS
… …
#endif
linux下定義了 “linux”, Sco Openserver下定義了unix
上面的方法有時候不是很確定,也不好自己掌握和控制,下面探討一下另一個方法:
在UNIX下有一個uname的命令,在不同的操作系統下有不同的返回, 例如:
SCO: SCO_SV
Linux: Linux
AIX: AIX
Unixware: UnixWare
可以在makefile文件中增加如下句子來判斷當前的操作系統類型,和編譯選擇:
OSTYPE=`uname`
CFLAGS_SCO = -D SCO_SV
CFLAGS_LINUX = -D AIX
prog:
@if [ “$(OSTYPE)” = ‘SCO_SV’ ];then make prog1;else make prog2;fi
prog1:
$(CC) -o tt tt.c $(CFLAGS_SCO)
prog2:
$(CC) -o tt2 tt2.c $(CFLAGS_AIX)
如上在編譯命令行中增加-D SCO_SV的定義, 程序的源代碼中可以如下使用:
#ifdef SCO_SV
typedef unsigned int socklen_t;
#endif
如此,源代碼就很容易的適應不同的操作系統了。
怎麼用C語言測電腦是幾位操作系統
#includestdio.h
int main(void)
{
if(sizeof(char*) == 4)
printf(“32位系統!\n”);
else if (sizeof(char*) == 8)
printf(“64位系統!\n”);
else
printf(“程序錯誤!”);
return 0;
}
具體原理有關指針的大小,32位系統內存大小為4G,一個指針4位就可以了,而64位系統內存大小為8G,指針為8位.
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/201149.html