I. Quelques raccourcis▲
I-A. souris▲
On peut glisser/déposer le texte sélectionné.
- Ctrl (maintenu) = copier au lieu de déplacer.
- Alt (maintenu) = sélectionner un rectangle de texte (reste un rectangle quand coupé/collé).
- Clic dans la marge = sélectionner des lignes.
- Double-clic = sélection d'un mot.
I-B. déplacement▲
- Home/End = aller en début/fin de texte de ligne (répéter Home pour aller en début de ligne, +Ctrl=début/fin de fichier).
- Ctrl+Gauche/Droite = aller de mot en mot.
- Ctrl+E = aller à l'accolade/parenthèse/crochet apparié.
- Ctrl+J/K = aller au #if #ifdef #ifndef #else #endif précédent/suivant.
- Ctrl+Shift+F8 = sélectionner un rectangle de texte au curseur.
- +Shift = sélectionner en déplaçant le curseur avec n'importe laquelle des commandes précédentes.
I-C. navigation▲
- Ctrl+F3 = occurrence suivante du mot courant (+Shift=précédent).
- Ctrl+F2 = mettre/enlever un marque-page (+Shift=tout enlever).
- F2 = aller au marque-page suivant (+Shift=précédent).
- F4 ou double-clic = lignes mentionnées dans la fenêtre output (erreurs ou « Find in Files ») (+Shift=précédent).
I-D. édition▲
- Ctrl+L = couper ligne(s).
- Ctrl+Shift+T = permuter deux mots.
- Alt+Shift+T = permuter deux lignes.
- Ins = permuter les modes insertion/refrappe de texte.
- Alt+F8 = indenter correctement la sélection.
- Tab = augmenter l'indentation des lignes sélectionnées (+Shift=diminuer).
- Ctrl+U = mettre en minuscules (+Shift=majuscules).
- Ctrl+Backspace =effacer le mot devant.
- Ctrl+Del = effacer le mot derrière.
I-E. renseignements▲
- F1 = aide sur le mot ou le n° d'erreur de compilation sous le curseur.
- F12 = trouver la définition du nom.
- Ctrl+* (pavé num) = revenir à la position d'origine.
- Alt+F12 = renseignements généraux sur le mot.
- Ctrl+Shift+Espace = afficher le prototype de la fonction (définie) en cours (Ctrl+PgUp/PgDown si plusieurs).
- Ctrl+T = information sur le type (normalement automatique).
- Ctrl+Espace = complétion automatique.
- Alt+Ctrl+T = lister membres (normalement automatique), ou tout si au niveau global.
I-F. compilation▲
- Alt+F10 = appliquer changement de code sans sortir du débogueur.
- Ctrl+F7 = compiler le source actuel seulement (fichier *.OBJ). C'est plus rapide.
I-G. autres▲
- Esc = masquer la fenêtre output (elle revient toute seule si elle change).
- Ctrl+I = commencer une recherche incrémentielle (taper les premières lettres).
II. Complétion automatique▲
C'est la liste qui surgit quand on tape . , :: , ->ou Ctrl+Espace.
Elle complète ce que l'on a commencé à taper, ou propose la liste des éléments pouvant correspondre.
Taper la suite, ou sélectionner un élément avec haut/bas, puis taper un séparateur quelconque (espace, parenthèse …) ou tabulation, et le nom est retapé en entier (avec correction majuscule/minuscule).
Pour en bénéficier avec les constructeurs, utiliser la syntaxe Classe::Classe(.
À noter qu'elle ne marche pas avec les patrons.
Le message d'aide visible dans cette liste, c'est les lignes de commentaires placées immédiatement à côté (//) ou au-dessus (plusieurs lignes, // ou /*…*/) de la déclaration ou de la définition.
Cela ne marche qu'avec les éléments globaux (variables, structures/classes, patrons, fonctions).
Exemple :
/*Contient les coordonnées d'un point
Les mesures sont des entiers*/
struct
Point
{
int
x ;//abscisse
int
y ;//ordonnée
}
;
II-A. Aide intégrée▲
Si vous l'avez appelé par F1, cliquez sur le bouton sommaire (ou localiser) de la barre d'outils (pas l'onglet) pour voir dans quelle rubrique vous êtes.
Si la partie « Compatibility » ne mentionne pas « ANSI », ce n'est pas une fonction standard. C'est le cas de tout ce qui commence par « _ ».
La documentation MSDN est normalement livrée avec Visual C++. Elle est aussi disponible en ligne: http://msdn.microsoft.com/Accès au MSDN.
En voici des rubriques « index » intéressantes :
- Operator Precedence and Associativity : priorité des opérateurs C++ ;
- Precedence and Order of Evaluation : priorité des opérateurs C ;
- C++ operators ;
- C++ Keywords ;
- Reference Tables : Portée des types, codes ASCII et scan codes ;
- Organization of the C++ Language Reference ;
- C Language Reference ;
- C++ Library Overview ;
- DLLs for Beginners : (rechercher) ;
- Standard Types : les types standard non intégrés.
II-B. Divers▲
Pensez à utiliser les mises à jour (Service Packs), elles corrigent bien des problèmes : [Plus supporté] . La coloration syntaxique de base peut être enrichie : Menu « Tool/Option », onglet « Format », cadre « Colors », sélectionner « Number », « String » puis « Operator » et leur choisir une couleur « Foreground ». Je propose respectivement bordeaux, gris foncé et rouge vif.
« Category : Source Windows » permet de choisir la police du code. Celles en gras sont recommandées (espacement fixe).
« Lucida Console » dispose de petites tailles.
Les menus contextuels sont présents un peu partout, même dans le code. Ils s'appellent avec le clic doit.
- Sur une directive #include, propose d'ouvrir le fichier.
- Sur un nom, propose d'aller à sa déclaration/définition.
II-C. Quelques macros bien pratiques▲
Menu « Tools/Macro », choisir « Macro File : SAMPLE ».
- « ToggleCommentStyle » change une suite de commentaires // en /*…*/ et inversement.
- « AutoCompleteFromFile » complète un nom s'il se trouve déjà dans le fichier édité.
- Pour créer votre macro, taper un nom, choisir « Edit » et insérer des commandes texte
Exemple :
'DESCRIPTION: écrit un en-tête pour les sources sous Visual C++.
ActiveDocument.Selection.StartOfDocument
ActiveDocument.Selection
=
"//Fait par: Votre nom"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection
=
"//le :"
ActiveDocument.Selection
=
Date
ActiveDocument.Selection
=
", "
ActiveDocument.Selection
=
Time
ActiveDocument.Selection.NewLine
ActiveDocument.Selection
=
"//à : Votre lieu de travail"
ActiveDocument.Selection.NewLine
II-D. Pour composer sa barre d'outils▲
On peut déplacer un outil en maintenant Alt enfoncée (Ctrl pour copier).
Déplacer hors de toute barre pour supprimer.
La barre de menu est une barre d'outils, on peut l'éditer.
Ouvrir menu « Tools/Customize » ou menu contextuel sur une barre puis « Customize » permet :
- de déplacer un outil ou article de menu existant directement (Ctrl pour copier) ;
- d'utiliser une macro en bouton/menu ;
- activer le fichier macro dans l'onglet « Add-ins and Macro Files » ;
- dans l'onglet « Commands », choisir « Category: Macro », faire glisser une commande dans la barre d'outils.
II-E. Préprocesseur▲
Pour précompiler seulement, aller dans le menu « Project/Settings » puis onglet « C/C++ », zone « Project Options » et rajouter au texte « /P » ou « /E » ou « /PE ». Cela permet de vérifier si l'expansion des macros est correcte.
P : génère un fichier *.i dans le répertoire du projet (c'est du texte).
E : affiche dans la fenêtre output (attention aux gros includes, genre windows.h).
II-F. Compilateur▲
Dans les options menu « Project/Settings », onglet « C/C++ », catégorie « Customize », les cases à cocher :
- « Disable language extensions » permet de désactiver les spécificités Microsoft pour être sûr de faire du code conforme au standard ANSI ;
- « Enable incremental compilation » permet de recompiler plus vite, mais génère de plus gros fichiers.
Le menu « Build/Rebuild All » permet de reconstruire tous les fichiers temporaires. Indispensable en cas de problèmes de temps système, de date de modification de fichiers, ou d'incohérence de compilation.
Ne pas oublier pas que les modes « Debug » et « Release » ont des options indépendantes.
II-G. Éditeur de liens▲
Pour changer le type d'un projet, aller dans le menu « Project/Settings », onglet « Link », zone « Project Options » et changer « /subsytem: » entre « console » et « windows ».
II-H. Débogage▲
Les options menu « Project/Settings », onglet « Debug », zones « Program arguments: » et « Working Directory: » permettent de spécifier le répertoire de travail et les arguments de l'exécutable.
II-H-1. Instructions de débogage (ces instructions ne font rien en mode Release)▲
avec MFC (#include <afxwin.h>):
TRACE(); //comme printf, mais s'affiche dans la fenêtre output en debug (go, F5)
ASSERT(); //suspend l'exécution si l'expression est fausse (0)
VERIFY(); //comme ASSERT, mais l'expression sera calculée en mode release également.
DEBUG_ONLY();//auto informant, non ?
Autres :
assert (); //ANSI (#include <assert.h>)
_ASSERT(); //#include <crtdbg.h>
II-H-2. Points d'arrêt▲
F9 pose/enlève un point d'arrêt. Lancée avec « Go », l'exécution s'y arrêtera. Ils peuvent être placés dans le code source, le code assembleur et la pile d'appels.
Ctrl+Shift+9 enlève tous les points d'arrêt.
Le menu « Edit/Breakpoints » permet de :
- créer/éditer/déplacer/modifier les points d'arrêts ;
- poser une condition à un arrêt existant ;
- poser un arrêt conditionnel sur tout le source (pour une variable locale, préciser la fonction) ;
- poser un arrêt sur un message Windows.
II-H-3. Mode débogage▲
On peut avancer jusqu'à n'importe quel point en y plaçant le curseur et en choisissant menu « Debug/Run to Cursor » (Ctrl+F10).
Placer le pointeur de souris sur une variable indique immédiatement sa valeur.
La fenêtre « Variables » (menu « View/Debug Windows ») permet de voir et changer les valeurs des variables en cours.
La fenêtre « Call Stack » (menu « View/Debug Windows ») permet, après un échec d'assertion, de remonter à la fonction appelante.
La fenêtre « Watch » (menu « View/Debug Windows ») permet :
- d'y glisser une expression depuis le code ;
- de connaître le type d'une variable. L'y sélectionner et appeler le menu contextuel et « Properties » (Alt+Entrée) ;
- de changer la valeur d'une variable facilement. Mettre comme nom var=valeur. La valeur sera affectée à var à chaque activation de l'onglet ;
- de choisir le format d'affichage des valeurs. Il faut ajouter au nom « , » et :
(Il y en a d'autres à la rubrique « Symbols for Watch Variables » dans la MSDN)
f |
float |
c |
caractère |
s |
chaîne |
us |
chaîne unicode |
wm |
message windows |
l,h |
préfixe long/short pour les suivants : |
d,i |
décimal signé |
u |
décimal non signé |
o |
octal non signé |
x,X |
hexa |
II-I. Quelques constantes symboliques prédéfinies▲
II-I-1. ANSI▲
__STDC__ |
C standard |
NDEBUG |
Not Debug |
II-I-2. ANSI (chaînes entre "")▲
__FILE__ |
Nom du fichier compilé |
__TIMESTAMP__ |
Moment de la dernière modification du fichier |
__LINE__ |
N° de ligne courante du fichier |
__DATE__ |
Date courante |
__TIME__ |
Heure courante |
II-I-3. Spécifique Microsoft▲
_MSC_VER |
Version du compilateur Microsoft |
__cplusplus |
Source C++ |
_DLL |
Contexte Multithread (avec DLL) |
_MT |
Contexte Multithread |
_WIN32 |
Contexte Windows 32 bits |
_CPPRTTI |
Informations de type à l'exécution activées |
_CPPUNWIND |
Gestion des exceptions activé |
_UNICODE |
Définir pour unicode (wide-character) |
_MBCS |
Définir pour caractères multibyte |
_DEBUG |
Mode debug |