Je suis confronté à un problème lors du test d'un programme C compilé avec mingw dans le shell MSYS2: J'ai écrit un analyseur de ligne de commande qui accepte les options selon la convention de Windows (en commençant par /
). Si je l'appelle mon programme comme celui-ci pour générer un fichier de sortie:MSYS2: comment désactiver la traduction automatique de pathname pour conduire la lettre?
./example.exe /o test
Ce qui finit dans argv[1]
est en fait O:/
. Cela fonctionne correctement lors d'un test à partir d'une fenêtre de console exécutant CMD.EXE
. Ce programme vraiment minimal démontre le comportement:
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc > 1)
{
puts(argv[1]);
}
return 0;
}
$ ./example.exe /o
O:/
Donc je suppose que c'est le shell MSYS2 essayer d'être utile et de remplacer quelque chose qui ressemble à un chemin à une lettre ci-dessous racine dans une syntaxe lettre de lecteur. Est-il possible de désactiver ce comportement? C'est un peu compliqué de toujours lancer CMD.EXE
pour tester.
Non lié à C. Avez-vous essayé échapper ou enfermer dans les tiques/'" ' – Olaf
@Olaf MSYS2 est un environnement de développement * pour * C et la règle de base est un * * tag de langue est presque toujours approprié! Même chose que des questions sur les arguments de la ligne de commande de 'clang' ou un' Makefile' pour construire du code C ... et bien sûr j'ai essayé * choses évidentes * comme ça! –
@Olaf et le vote pour migrer est également faux, voir [Quels sujets puis-je poser à propos d'ici] (https://stackoverflow.com/help/on-topic), en particulier "* outils logiciels couramment utilisés par les programmeurs *" –