ожидаемое первичное выражение перед символом ‘,’

Я сейчас получаю сообщение об ошибке:

kernel.c++:76:21: error: expected primary-expression before ',' token
Task task1(&gdt , taskA);
^
kernel.c++:77:21: error: expected primary-expression before ',' token
Task task2(&gdt , taskB);

Не уверен, почему это происходит здесь, код моего kernel.c ++ упрощен:

void taskA();
void taskB();

extern "C" void kernelMain
(
/*arguments...*/
){
gdt gt;

TaskManager taskManager;
Task task1(&gdt , taskA);
Task task2(&gdt , taskB);
taskManager.AddTask(&task1);
taskManager.AddTask(&task2);
}

void taskA()
{
while(true)
printf("A");
}void taskB()
{
while(true)
printf("B");
}

Если вы хотите увидеть мой настоящий код ядра: https://github.com/amanuel2/OS_Mirror/blob/master/kernel.c%2B%2B .. Любая помощь

Вот моя задача. Упрощенная:

class Task
{
friend class TaskManager;
private:
uint8_t stack[4096]; // 4 KiB
CPUState* cpustate;
public:Task(gdt *GlobalDescriptorTable, void entrypoint());
~Task();
};class TaskManager
{
private:
Task* tasks[256];
uint32_t num_task;
uint32_t current_task;
public:
TaskManager();
~TaskManager();
bool AddTask(Task* task);
CPUState* Schedule(CPUState* cpustate);
};

Если вы хотите увидеть весь код для task.h, вот он: https://github.com/amanuel2/OS_Mirror/blob/master/task.h ..

и, наконец, свернутый файл task.c ++:

Task::Task(gdt *GlobalDescriptorTable, void entrypoint())
{
/*Stuff Happenes Here.. But i Minimized it*/
}

Если вы хотите увидеть фактический файл task.c ++, вот он: https://github.com/amanuel2/OS_Mirror/blob/master/task.c%2B%2B .. Я не понимаю, почему я получаю эту ошибку. Любая помощь будет принята с благодарностью.

1

Решение

Ваша ошибка, вероятно, в этих двух строках:

Task task1(&gdt , taskA);
Task task2(&gdt , taskB);

Так должно быть

Task task1(&gt , taskA);
Task task2(&gt , taskB);

Вам следует изменить имена типов и имена переменных, чтобы они не выглядели одинаково, чтобы избежать подобных ошибок.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]