Реализация std :: экспериментальная :: source_location в визуальной студии

Разумно соответствующая версия std::experimental::source_location может быть реализован в GCC с __builtin_FILE(), __builtin_LINE()и т. д. Существуют ли подобные встроенные функции в Visual Studio 2017? Или есть ли способ реализовать std::experimental::source_location в Visual Studio 2017?

1

Решение

К сожалению, в настоящее время нет способа правильно реализовать source_location только с помощью компилятора, поэтому вам придется использовать препроцессор и макросы, такие как __FILE__, __LINE__ а также __FUNCTION__ передать информацию о местоположении в структуру данных, которая их хранит (то, что вы называете source_location).

Сказав это, я действительно разделяю вашу боль.

Недавно я разрабатывал небольшую библиотеку, которая добавляет данные о местоположении и некоторую другую информацию к исключениям, которые были выброшены, и там мне пришлось закончить с таким уродливым макросом, как MY_THROW(Exception(args)) который в основном просто передает значения, полученные из вышеупомянутых макросов, в функцию, которая выдает исключение. Как бы ужасно это ни выглядело, похоже, пока это единственный работающий вариант.

2

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

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

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