Spec-Zone.ru › GCC 15

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API