Est-il possible de déterminer le numéro de ligne qui appelle une fonction sans l'aide d'une macro?Détermination de la ligne appelante sans macro
Tenir compte de ce code:
#include <iostream>
#define PrintLineWithMacro() \
std::cout << "Line: " << __LINE__ << std::endl; // Line 4
void PrintLine()
{
std::cout << "Line: " << __LINE__ << std::endl; // Line 8
}
int main(int argc, char **argv)
{
PrintLine(); // Line 13
PrintLineWithMacro(); // Line 14
return 0;
}
qui produit les éléments suivants:
Line: 8
Line: 14
Je comprends pourquoi chaque imprime ce qu'ils font. Je suis plus intéressé s'il est possible d'imiter la fonction macro sans utiliser de macro.
La seule façon d'obtenir la ligne est avec '__LINE__'; vous devez utiliser le préprocesseur quelque part. (En d'autres termes, le préprocesseur traite le code * brut *, et les numéros de ligne font partie du code * brut *.) – GManNickG