本文目录一览:
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位.