gcc — есть ли эквивалент link_warning (символ) для C ++?

Можно ли определить метод класса C ++, который будет компилироваться чисто, но при появлении предупреждения используемый, каким-то образом похожим на неосуществленные функции библиотеки C? Что-то вроде:

int MyClass::frobnicate()
{
link_warning(frobnicate, "function not implemented");
return 0;
}

__attribute__((deprecated)) или новее [[deprecated]] Атрибуция имеет правильную функциональность (это то, что я буду использовать, если нет другого выбора), но я бы не хотел говорить пользователю, что frobnicate не рекомендуется, если его просто невозможно реализовать из-за причины XYZ.

Пример кода C (из Glibc):

#define link_warning(symbol, msg) \
__make_section_unallocated (".gnu.warning." #symbol) \
static const char __evoke_link_warning_##symbol[]     \
__attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \
= msg;

Предупреждение, которое выдает этот макрос, выглядит следующим образом (вот пример кода, использующего его):

/path/to/file.o: в функции `symbol ‘:

/path/to/file.c:line: предупреждение: сообщение

Наивный link_warning(MyClass::frobnicate, "function not implemented") кажется, не работает, и поиск и использование украшенных имен кажется хакерским и непереносимым (и я не уверен, что это действительно сработает).

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]