Документы GCC на http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html говорят (под -ffreestanding
), что автономная среда подразумевает -fno-builtin
. Возможно, я неправильно понимаю, что такое автономная среда или как она работает, но мне кажется, что, поскольку встроенные функции обычно генерируют встроенный код вместо вызова библиотечной функции, это идеально подходит для автономной среды, где стандартная библиотека может отсутствовать функциональности или даже вообще отсутствует.Свободностоящие GCC и встроенные функции
Итак, почему мы не хотим использовать biltins с автономной средой?
Вы можете, однако, явно сделать что-то вроде; #define memcpy (x, y, z) __builtin_memcpy ((x), (y), (z)) – vyudh
Вы можете, однако, в автономном режиме явно делать что-то вроде; #define memcpy (x, y, z) __builtin_memcpy ((x), (y), (z)) Как указано в руководстве gcc. – vyudh
Кроме того, вы можете во всех случаях использовать __builtin_xxx напрямую, но он не является стандартным C, это расширение GNU. Основная прибыль бесшумных встроенных контроллеров GCC - это стандартная замена контекста, сохраняющая переносимость кода. Если вы не заботитесь о соответствии, а также не заботитесь о том, что ваша цель может не поддерживать этот встроенный, то явное использование встроенного приложения или использование под макросом является хорошим вариантом. –