C ++ - есть ли способ получить текущую исполняющую строку - PullRequest
0 голосов
/ 25 февраля 2011

Мне нужно создать обработку исключений, так как я также попросил напечатать статус операции, например

"файл открыт: операция успешно завершена"

"файл закрыт: операция успешно завершена",

и т.д.

Есть ли макрос для этого, например __LINE__,__FUNCTION__,__FILE__?

Или для этого есть какая-нибудь функция усиления?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Оба типа __LINE__ и __FILE__ доступны в C ++, как и в C. Единственное предостережение заключается в том, что они являются макросами, развернутыми во время компиляции, поэтому, если вы вставите их в макросы или шаблоны, они могут или не могут делай, что ожидаешь.

2 голосов
/ 25 февраля 2011

Я думаю, что ответ заключается в том, что вы хотите преобразовать вычисляемое выражение в строку?

1 голос
/ 25 февраля 2011

Я не уверен, что именно вы спрашиваете, но вот пример кода из моей собственной библиотеки:

/**
 * \brief Convenient alias to create an exception.
 */
#define EXCEPTION(type,msg) type((msg), __FUNCTION__, __FILE__, __LINE__)

По сути, это позволяет мне написать:

throw EXCEPTION(InvalidParameterException, "The foo parameter is not valid");

Конечно, InvalidParameterException - это класс, который я разработал и который требует дополнительных параметров для хранения функции, файла и строки, в которой было создано исключение.

Он имеет следующий конструктор:

InvalidParameterException::InvalidParameterException(
  const std::string& message,
  const std::string& function,
  const std::string& file,
  int line);

Конечно, если вы не хотите генерировать исключение, а просто выводите что-то в, скажем, файл журнала, вы, очевидно, можете использовать тот же «трюк».

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...