6.11.4 Константные выражения C++11 вместо строковых литералов
В C++ с -std=gnu++11 или более поздней версией строки, используемые в синтаксисе asm, — в частности, шаблон ассемблера, ограничения и clobber-операнды, — можно задавать как заключённые в скобки константные выражения времени компиляции, а также в виде строковых литералов. Скобки вокруг такого выражения являются обязательной частью синтаксиса. Константное выражение может возвращать контейнер с функциями-членами data () и size (), следуя правилам, аналогичным правилам для сообщения static_assert в C++26. Любая строка преобразуется в кодировку исходного кода. Если эта возможность доступна, предварительно определяется макрос препроцессора __GXX_CONSTEXPR_ASM__.
Это расширение поддерживается как для базового, так и для расширенного синтаксиса asm.
#include <string>
constexpr std::string_view genfoo() { return "foo"; }
void function()
{
asm((genfoo()));
}
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Asm-constexprs.html