J'ai un programme qui ne doit être compilé qu'en mode DEBUG. (objectif de test)
Comment puis-je empêcher le préprocesseur d'empêcher la compilation en mode RELEASE?
Placez n'importe où:
#ifndef DEBUG
#error Only Debug builds are supported
#endif
C fournir un #error
, et la plupart des compilateurs ajoutent un #warning
déclaration. La documentation de gcc recommande pour citer le message.
Peut-être quelque chose de plus sophistiqué, mais ce n'est que du copier-coller des solutions précédentes. :-)
#ifdef DEBUG
#pragma message ( "Debug configuration - OK" )
#Elif RELEASE
#error "Release configuration - WRONG"
#else
#error "Unknown configuration - DEFINITELY WRONG"
#endif
P.S. Il existe également une autre façon de générer un avertissement. Créez une étiquette non référencée comme
HereIsMyWarning:
et ne vous y référez pas. Pendant la compilation, vous obtiendrez un avertissement comme
1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label
Vous pouvez utiliser une directive error
pour cela. Le code suivant générera une erreur au moment de la compilation si DEBUG
n'est pas défini:
#ifndef DEBUG
#error This is an error message
#endif
Si vous souhaitez simplement signaler une erreur:
#ifdef RELEASE
#error Release mode not allowed
#endif
fonctionnera avec la plupart des compilateurs.
Pour GCC et Clang (et probablement tout compilateur qui prend en charge la fonction _Pragma), vous pouvez définir une macro:
#if ! DEBUG
#define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"")
#else
#define FIX_FOR_RELEASE(statement) statement
#endif
Vous pouvez utiliser cette macro pour des hacks temporaires, par exemple pour contourner le code qu'un collègue n'a pas encore écrit, pour vous assurer de ne pas oublier de le corriger une fois que vous souhaitez publier une build au public. Soit
FIX_FOR_RELEASE()
// Code that must be removed or fixed before you can release
ou
FIX_FOR_RELEASE(statement that must be removed or fixed before you can release);
Dans Code :: Blocks, si vous ne voulez pas le mode Release, vous pouvez supprimer le mode Release. Pour ce faire, cliquez sur le menu Projet, sélectionnez Propriétés ... et dans l'onglet Créer des cibles, vous pouvez cliquer sur Libérer, puis sur le bouton Supprimer. La suppression du mode Release ne le fait que pour le projet en cours, vous pouvez donc toujours l'utiliser dans d'autres projets.
Sinon, si vous voulez vraiment utiliser le préprocesseur, vous pouvez le faire:
#ifdef RELEASE
#error "You have to use the Debug mode"
#endif