Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:&书信电报;sys/sysctl.h>;未能声明函数CTL_HW和HW_NCPU_C++_Header Files - Fatal编程技术网

C++ C++;:&书信电报;sys/sysctl.h>;未能声明函数CTL_HW和HW_NCPU

C++ C++;:&书信电报;sys/sysctl.h>;未能声明函数CTL_HW和HW_NCPU,c++,header-files,C++,Header Files,大家好 我正在使用以下脚本(我没有编写)。这是我一直在努力修改的许多文件之一,以便在Linux上启动构建/制作 我在网上找到的所有信息都表明sys/sysctl.h应该正确声明以下函数: CTL_HW和HW_NCPU 但是,运行以下程序(称为“machineInfo.cpp”): 代码本身有问题吗?还是需要包含另一个标题?我已经用这个做了实验,在谷歌上搜索了几个小时,结果一无所获 非常感谢, 肖恩我认为问题在于。据我所知,这些常数是 我很高兴被证明是错的,因为我正在试图了解是否可以在Linux上

大家好

我正在使用以下脚本(我没有编写)。这是我一直在努力修改的许多文件之一,以便在Linux上启动构建/制作

我在网上找到的所有信息都表明sys/sysctl.h应该正确声明以下函数:

CTL_HW和HW_NCPU

但是,运行以下程序(称为“machineInfo.cpp”):

代码本身有问题吗?还是需要包含另一个标题?我已经用这个做了实验,在谷歌上搜索了几个小时,结果一无所获

非常感谢,


肖恩

我认为问题在于。据我所知,这些常数是


我很高兴被证明是错的,因为我正在试图了解是否可以在Linux上工作。

请在这里发布命令的输出
echo | g++-dM-E-| grep Linux
不响应澄清请求是赢得否决票的好方法。我使用了Docker和Ubuntu 18.04,包括请求的输出。@JasonR.Coombs这是在我冒险去实地考察之前,我完全忘记了这篇文章。我的错。我无法明确地解决这个问题,但结果证明这是白费力气,因为制作/安装感兴趣的程序所需做的只是调用编译器(编译器已经安装在我工作的计算集群上)。
#include "machineInfo.h"

#include <sys/sysctl.h>
#include <linux/sysctl.h>
#include <cstdio>

#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))

int StMachineInfo::numProcs(void) {

    int numCPU = 0;
    int nprocs;
    size_t len = sizeof(nprocs); 
    static int mib[2] = { CTL_HW, HW_NCPU };

    /* get the number of CPUs from the system */
    sysctl(mib, 2, &numCPU, &len, NULL, 0);

    if( numCPU < 1 ) 
        {
        mib[1] = HW_NCPU;

        if (sysctl (mib, ARRAY_SIZE(mib), &nprocs, &len, NULL, 0) == 0 && len == sizeof (nprocs) && 0 < nprocs)
            numCPU = nprocs;

        if( numCPU < 1 )
            numCPU = 1;
        }
    return numCPU;

}
g++  -c machineInfo.cpp
machineInfo.cpp: In function ‘int StMachineInfo::numProcs()’:
machineInfo.cpp:14:24: error: ‘CTL_HW’ was not declared in this scope
  static int mib[2] = { CTL_HW, HW_NCPU };
                        ^
machineInfo.cpp:14:32: error: ‘HW_NCPU’ was not declared in this scope
  static int mib[2] = { CTL_HW, HW_NCPU };
                                ^
Makefile:33: recipe for target 'machineinfo.o' failed
make: *** [machineinfo.o] Error 1