Chemin de fichier complet C / C ++ dans la macro assert

Je me demande s’il est possible d’afficher le chemin d’access complet à l’aide de la macro assert? Je ne peux pas spécifier le chemin complet du fichier dans la commande de compilation. Y a-t-il encore un moyen de le faire?

Mon environnement de débogage est linux / g ++

Vous pouvez append l’option macro suivante dans votre ligne de compilation (peut être facilement modifiée pour votre environnement)

%.o: %.cpp $(CC) $(CFLAGS) -D__ABSFILE__='"$(realpath $<)"' -c $< -o $@ 

alors vous devez juste ceci pour avoir votre chemin complet:

 #include  int main() { printf(__ABSFILE__); // will be expanded as: printf("/tmp/foo.c") } 

MODIFIER

Encore mieux que cela: les règles suivantes suffisent !!!

 %.o: %.cpp $(CC) $(CFLAGS) -c $(realpath $<) -o $@ 

Et vous pouvez maintenant utiliser la macro __FILE__ :

 #include  int main() { printf(__FILE__); // will be expanded as: printf("/tmp/foo.c") } 

assert utilise la macro __FILE__ pour obtenir le nom du fichier. Il sera étendu au chemin utilisé lors de la compilation. Par exemple, en utilisant ce programme:

 #include  int main(void) { printf("%s\n", __FILE__); return 0; } 

Si je comstack avec ‘gcc -o foo foo.c’ et que je cours, j’obtiendrai cette sortie:

 foo.c 

Mais si je comstack avec ‘gcc -o foo /tmp/foo.c’ et que je cours, je récupèrerai ce résultat:

 /tmp/foo.c