Передача вызывающего __FILE__ __LINE__ функции без использования макроса

Я привык к этому:

class Db {
  _Commit(char *file, int line) {
    Log("Commit called from %s:%d", file, line);
  }
};

#define Commit() _Commit(__FILE__, __LINE__)

но большая проблема в том, что я переопределяю слово Commit глобально, и в структуре приложения 400 тыс. строк это проблема. И я не хочу использовать конкретное слово вроде DbCommit : мне не нравятся избыточности, такие как db-> DbCommit () , или передавать значения везде вручную: db- > Commit (__ FILE__, __LINE __) худшее.

Итак, какой совет?

22
задан Brian Tompsett - 汤莱恩 2 March 2016 в 11:07
поделиться