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