При включении файла заголовка Linux, в данном случае ucontext.h, в проект Linux C++ в Visual Studio 2017 для моей программы C, он не распознает файл заголовка. Даже когда я включаю sys/ucontext.h, он не распознает функции, которые я должен использовать для объекта ucontext_t, например getContext() и setContext(). Разве я не могу использовать эти функции в проекте Linux C++?
Код, который я пишу:
#include <stddef.h>
#include <string.h>
#include <sys/ucontext.h>
// If I use ucontext.h instead, it gives the error: cannot open source file ucontext.h
//TCB structure
typedef struct TCB_t {
struct TCB_t *next;
struct TCB_t *prev;
ucontext_t context;
} TCB_t;
void init_TCB(TCB_t *tcb, void *function, void *stackP, int stack_size)
{
memset(tcb, '\0', sizeof(TCB_t));
tcb->context.uc_stack.ss_sp = stackP;
tcb->context.uc_stack.ss_size = (size_t)stack_size;
int c = getcontext(tcb->context); // Cannot resolve field getcontext()
}
c
?), функции и структуры по-прежнему являются функциями и структурами C. В C нет функций-членов, только автономные функции, не являющиеся членами, в глобальной области видимости. Я также предлагаю вам снова прочитать связанную ссылку и отметить, что функции принимают в качестве аргументов. - person Some programmer dude   schedule 26.03.2017getcontext
принимает указатель наucontext_t
в качестве аргумента, а неucontext_t
в качестве аргумента. Кроме того, поскольку он инициализирует структуру, вам, вероятно, следует изменитьuc_stack
после его вызова. - person Ross Ridge   schedule 26.03.2017