gpt4 book ai didi

c - 函数 ‘sched_setaffinity’ 的隐式声明

转载 作者:IT王子 更新时间:2023-10-29 01:00:19 25 4
gpt4 key购买 nike

我正在编写一个需要在单核上运行的程序。为了将它绑定(bind)到单核,我使用了 sched_setaffinity(),但编译器给出了警告:

implicit declaration of function ‘sched_setaffinity’

我的测试代码是:

#include <stdio.h>
#include <unistd.h>
#define _GNU_SOURCE
#include <sched.h>

int main()
{
unsigned long cpuMask = 2;
sched_setaffinity(0, sizeof(cpuMask), &cpuMask);
printf("Hello world");
//some other function calls
}

你能帮我弄清楚吗?实际上代码是编译运行的,但我不确定它是在单核上运行还是在切换核上运行。

我使用的是 Ubuntu 15.10 和 gcc 5.2.1 版

最佳答案

您需要将 #define _GNU_SOURCE 移到顶部。在 man sched_setaffinity 它说:

 #define _GNU_SOURCE             /* See feature_test_macros(7) */

man 7 feature_test_macros 中它说:

NOTE: In order to be effective, a feature test macro must be defined before including any header files. This can be done either in the compilation command (cc -DMACRO=value) or by defining the macro within the source code before including any headers.

所以在一天结束时,您的代码应该如下所示:

#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <sched.h>


int main()
{
unsigned long cpuMask = 2;
sched_setaffinity(0, sizeof(cpuMask), &cpuMask);
printf("Hello world");
//some other function calls
}

关于c - 函数 ‘sched_setaffinity’ 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com