LINUX.ORG.RU

pthread.h вопрос


0

0

Вопрос такой:
есть функция:
int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
пытаюсь создать ей обертку (ну чтоб видеть ошибки при отладке и все такое)

int Pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg)
{
int status = pthread_create(thread, attr, start_routine, arg);

if ( !status )
{
/////....................
}
return status;
}

ну выдает ошибку , по в заголовке (не верное количество параметров) т.е если убрать "restrict" из сигнатуры то все работает, собственно вопрос за что отвечает "restrict", и как его включить в сигнатуру? (ну раз есть то очевидно нужен)

Ответ на: комментарий от hello_world

restrict-квалификация указателей в C99 означает, что данные, на которые указывают такие указатели не указывают на пересекающиеся объекты. Эта информация позволяет компилятору безопасно применять некоторые специальные виды оптимизаций.

hello_world
() автор топика

#include <pthread.h>
#include <stdio.h>
#include <string.h>

int Pthread_create(pthread_t *restrict thread,
		const pthread_attr_t *restrict attr,
		void *(*start_routine)(void*), void *restrict arg)
{
	int status = pthread_create(thread, attr, start_routine, arg);
	if (status)
		fprintf(stderr, "pthread_create: %s\n", strerror(status));
	return status;
}

$ gcc -c x.c
x.c:5: error: expected ';', ',' or ')' before 'thread'
$ gcc -Drestrict= -c x.c 
$ c99 -c x.c
$ 

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.