Size: a a a

2020 December 14

m

magras in pro.cxx
std::slavik
так и никто не мешает брать указатель на библиотечные функции, просто нужно знать сигнатуру
Стандарт мешает. Я же объяснял зачем это объявлено UB.
источник

s

std::slavik in pro.cxx
а можно ссылку на стандарт где это прописано?
источник

IL

Ignat Loskutov in pro.cxx
Who would win: странное желание разработчика vs какие-то две буковки в каком-то мутном документе?
источник

O

Ofee in pro.cxx
std::slavik
а можно ссылку на стандарт где это прописано?
Вот здесь:
Unless F is designated an addressable function, the behavior of a C++ program is unspecified (possibly ill-formed) if it explicitly or implicitly attempts to form a pointer to F
источник

s

std::slavik in pro.cxx
Ofee
Вот здесь:
Unless F is designated an addressable function, the behavior of a C++ program is unspecified (possibly ill-formed) if it explicitly or implicitly attempts to form a pointer to F
unspecified != undefined
источник

s

std::slavik in pro.cxx
unspecified это значит что поведение задокументировано реализацией языка
источник

O

Ofee in pro.cxx
std::slavik
unspecified это значит что поведение задокументировано реализацией языка
Насколько я помню, это не так. Более того, я бы в первую очередь обратил внимание на текст в скобках
источник

s

std::slavik in pro.cxx
надо смотреть на конкретную реализацию
в некоторых это может быть ill-formed
источник

IL

Ignat Loskutov in pro.cxx
> inline assembly
> разговоры о переносимости
источник

DS

Dmitry Sokolov in pro.cxx
Чтобы вызвать функцию надо ж создать функцию.
источник

m

magras in pro.cxx
std::slavik
надо смотреть на конкретную реализацию
в некоторых это может быть ill-formed
Для меня этого уже достаточно чтобы сказать, что код не соответствует стандарту: он написан под конкретную реализацию. Но с этой позицией можно спорить.
источник

s

std::slavik in pro.cxx
magras
Для меня этого уже достаточно чтобы сказать, что код не соответствует стандарту: он написан под конкретную реализацию. Но с этой позицией можно спорить.
> соответствие стандарту
> ассемблерные вставки
источник

s

std::slavik in pro.cxx
если уж докапываться - какой именно ассемблер используется?
источник

s

std::slavik in pro.cxx
в msvc вон все задокументировано - там и надо смотреть
а не на стандарт
к стандарту какие могут быть вопросы при использовании асм вставок
источник

PY

Phil Yar in pro.cxx
std::slavik
в msvc вон все задокументировано - там и надо смотреть
а не на стандарт
к стандарту какие могут быть вопросы при использовании асм вставок
у вас есть опыт работы с микроконтроллерами?
источник

m

magras in pro.cxx
std::slavik
> соответствие стандарту
> ассемблерные вставки
Я говорю о взятии адреса функции из стандартной библиотеки. На это можно напороться оставаясь в остальном рамках стандарта. Например что-нибудь такого плана:

void (*f)() = std::terminate;
f();


Правда я не проверял является ли terminate addressable function.
источник

s

std::slavik in pro.cxx
Phil Yar
у вас есть опыт работы с микроконтроллерами?
есть
источник

VS

Vlad Serebrennikov in pro.cxx
std::slavik
unspecified это значит что поведение задокументировано реализацией языка
задокументировано реализацией это implementation-defined
источник

d

disba1ancer in pro.cxx
Ofee
Вот здесь:
Unless F is designated an addressable function, the behavior of a C++ program is unspecified (possibly ill-formed) if it explicitly or implicitly attempts to form a pointer to F
А это свинство, к таким обёртку только кодогеном делать
источник

ПК

Побитый Кирпич... in pro.cxx
magras
Для меня этого уже достаточно чтобы сказать, что код не соответствует стандарту: он написан под конкретную реализацию. Но с этой позицией можно спорить.
Порядок вычисления параметров функций unspecified, следовательно любой вызов функции с параметрами > 1 не соответствует стандарту и написан под конкретную реализацию
источник