我试图为一个类编写一段非常简单的代码,但我只是难以理解为什么我无法编译它。很抱歉,如果这是一个重复或愚蠢的问题,但我无法找到任何其他人为我解答这个问题。我的完整程序粘贴在下面。当我尝试编译时,我收到以下错误:
test.c:在功能' main':
test.c:7:27:错误:预期';'之前' {'令牌
以下是代码:
#include<stdio.h>
#include<linux/sched.h>
#include<linux/kernel.h>
int main(){
struct task_struct *task;
for_each_process(task){
printf("I found task: %d\n", task->pid);
}
return 0;
}
我觉得我错过了一些非常明显的东西,有人能指出这里的问题是什么吗?我已经尝试初始化“任务”#39;对象为NULL并使用更简单的printf语句,只打印&#39; test&#39;,但我尝试过的任何内容都修复了这个编译错误。
答案 0 :(得分:0)
您正在使用for_each_process
的预处理程序令牌未定义,或未定义为执行您认为的操作。
我所使用的每个C ++编译器都可以被告知转储后预处理输出。如果你传递了在构建源文件时发生这种情况的标志,那么你将看到编译器正在看到的代码并搞砸了。
例如, gcc -E
clang -E
或视觉工作室中的/E
标志(heh)。
正如@Ulrich上面提到的,显然宏只在内核中可用。试图直接阅读<linux/sched.h>
并确定这一点很有挑战性,因为有很多很多ifdef / endif对。
答案 1 :(得分:0)
宏已在2017年提交的c3edc4010e9d102eb7b8f17d15c2ebc425fed63c提交中移至my_fun <- function(x) {
if_else(any(!is.na(x)), na.exclude(x)[1], NA_character_)
}
。(https://github.com/torvalds/linux/commit/c3edc4010e9d102eb7b8f17d15c2ebc425fed63c)。
(针对因该原因而无法编译的人。)