是否有可能在c ++中检测操作系统?

时间:2015-02-19 13:27:57

标签: c++ perl operating-system

我正在使用CentOS,并尝试将perl代码转换为C ++。在perl中我们可以使用

检测操作系统
$^O or we can print: print "S^O";
o/p: linux

我们在C ++中有任何功能,它将完成这项工作。 提前致谢。

2 个答案:

答案 0 :(得分:0)

通常有两种方式:

  • 操作系统通过宏嗅探 例如。如果定义了WIN32,那么您就在Windows上。

  • 标题搜索路径 必须为每个平台构建C ++程序。只需定义标题搜索路径,即可找到平台的相关标题版本。

对于操作系统嗅探,请查看the macro list at SourceForge(AFAIK那里只有一个这样的项目)。

答案 1 :(得分:0)

@Joachim Pileborg感谢您的建议...对于uname系统调用...从以下代码我可以得到系统信息。

 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <sys/utsname.h>

int main(void) {

 struct utsname buffer;

 errno = 0;
 if (uname(&buffer) != 0) {
  perror("uname");
  exit(EXIT_FAILURE);
}

 printf("system name = %s\n", buffer.sysname);
 printf("node name   = %s\n", buffer.nodename);
 printf("release     = %s\n", buffer.release);
 printf("version     = %s\n", buffer.version);
 printf("machine     = %s\n", buffer.machine);

 return EXIT_SUCCESS;
}