URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10357
[ Назад ]

Исходное сообщение
"Что не так c noreturn функцией?"

Отправлено Павел Отредиез , 22-Фев-21 12:22 
_exit.c:

#include <sys/types.h>
#include <sys/syscall.h>

void __syscall(quad_t n, ...);

void _exit(int status)
{
    __syscall(SYS_exit, status);
}



$ cc -c -Wall _exit.c
_exit.c:31:1: warning: function declared 'noreturn' should not return
      [-Winvalid-noreturn]
}
^
1 warning generated.

Вроде функция вызывает другую noreturn функцию, предупреждений быть не должно, а есть... Я не понимаю почему, помогите плиз.


Содержание

Сообщения в этом обсуждении
"Что не так c noreturn функцией?"
Отправлено yesreturn , 22-Фев-21 21:35 
А __syscall точно noreturn? `syscall` и `_syscall` точно не noreturn, про ваш `__syscall` ничего не знаю) Если что, добавьте вечный цикл в конце функции, например просто while(1);

"Что не так c noreturn функцией?"
Отправлено DeadMustdie , 28-Фев-21 17:24 
> void _exit(int status)

Переопределять функцию стандартной библиотеки - не самая лучшая идея.
Пример реализации из состава glibc малость сложнее вашего:
https://github.com/lattera/glibc/blob/master/sysdeps/unix/sy...