Baduit

A young French developper who really likes (modern) C++

About me
24 April 2021

Petite astuce pour commenter du code ayant déjà des commentaires

by Baduit

Contexte

Imaginez-vous en train de débugger votre programme : soudainement, vous voyez une fonction avec une partie de son contenu qui vous semble étrange. Vous vous dites que cela pourrait être intéressant de voir le comportement de votre programme sans ce bout de code.

Vous essayez donc de le mettre en commentaire (avec le raccourci de votre éditeur préféré, qui met automatiquement les caractères /* */, et là, vous remarquez dépité que seul le début de l’extrait de code a été commenté car il y a déjà des commentaires multilignes (utilisant /* */).

Vous êtes bien embêté, mais vous avez plusieurs solutions en tête, plus ou moins pratiques, pour palier ce problème. Supprimer le code, utiliser des commentaires mono-lignes ou bien mettre un if (false) {}, par exemple. Je vais vous parler d’une autre technique toute simple.

L’astuce

Il vous suffit de mettre le code que vous souhaitez commenter entre un #if 0 et le #endif correspondant.

Voici un exemple :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int big_and_ugly_function(int cost, const std::string& name)
{
	apply_margin(cost);

	#if 0
	/* Best comment ever ! */
	std::cout << "Hi: " << name << std::endl;
	apply_reduction(cost, name);
	
	/* Usefull comment. */
	apply_taxes(cost);

	/* This comment is blowing your mind. */
	std::cout << "The cost is: " << cost << std::endl;
	#endif

	return cost;
}

Si jamais vous voulez décommenter temporairement le code, il suffira de remplacer le #if 0 par #if 1 comme ceci :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int big_and_ugly_function(int cost, const std::string& name)
{
	apply_margin(cost);

	#if 1
	/* Best comment ever ! */
	std::cout << "Hi: " << name << std::endl;
	apply_reduction(cost, name);

	/* Usefull comment. */
	apply_taxes(cost);

	/* This comment is blowing your mind. */
	std::cout << "The cost is: " << cost << std::endl;
	#endif
	
	return cost;
}

Voilà, c’est tout pour cette astuce ! Il est probable que vous la connaissiez déjà, si vous avez un peu d’expérience, mais une piqûre de rappel ne fait pas de mal !

tags: C++