微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎么知道C中的cpu / os的位数

我知道如何获得一个cpu一个操作系统与壳的位数。

cat /proc/cpuinfo | grep lm #-> get bit count of a cpu uname -a #-> get bit count of an operation system

但是,我们怎样才能得到一个C程序的位数。 这是一个面试问题,我的解决scheme如下:

int *ptr; printf("%dn",sizeof(ptr)*8);

但面试官说这是错的。 那么,正确的答案是什么?

POSIX也提供了C函数。 你可以像shell命令uname一样获得类似的结果:

#include <stdio.h> #include <sys/utsname.h> int main(){ struct utsname buf; uname(&buf); printf("sysname: %snversion: %snmachine: %sn ",buf.sysname,buf.version,buf.machine); return 0; }

在我的机器上输出

sysname: Linux version: #1 SMP Tue Oct 2 22:01:37 EDT 2012 machine: i686

在Linux上,一个简单的方法是使用uname -m命令来执行popen ,然后解析输出

另一种方法是查看uname命令的源代码(因为它是随时可用的),并直接实现某些东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐