Макрос 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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