Макрос BUILD_BUG_ON_INVALID(e) в ядре Linux кажется бесполезным?Linux

Anonymous
Макрос BUILD_BUG_ON_INVALID(e) в ядре Linux кажется бесполезным?

Сообщение Anonymous »

Макрос определен в ядре следующим образом:

Код: Выделить всё

#define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e))))
Я тестирую макрос следующим образом:

Код: Выделить всё

#include 

#define BUILD_BUG_ON_INVALID(e) ((void)(sizeof(( long)(e))))
#define true 1

int main() {
BUILD_BUG_ON_INVALID(true);
return 0;
}
Затем я компилирую его с помощью:

Код: Выделить всё

gcc -Wall -Wextra -c test.c
Но я не получаю никаких предупреждений (как при true=0, так и при true=1)
Версия gcc — 11.4.0
Я думаю, меня смущает то, что такое недопустимое выражение.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -be-no-use

Вернуться в «Linux»