Manual de estilo C / C++

[< anterior]       [indice]       [siguiente >]

7. Defines, macros y constantes


7.1 Nomenclatura de defines, macros, constantes

  • Los nombres de defines, macros, constantes, etc... tienen que ser autoexplicativos. En sí mismos tienen que contener una explicación de su uso o finalidad.

  • Para componer los nombres de defines, constantes, etc.. se utilizarán principalmente sustantivos, pudiendo calificarse con adjetivos.
    Para las macros, se utilizarán formas verbales (infinitivos), acompañados opcionalmente de sustantivos que califiquen la acción.
    Esto se realizará así para mejorar la identificación de los distintos componentes de un sistema.

  • Las constantes se tienen que definir en mayusculas (tanto las definidas por #define como las definidas utilizando const).
    Si se componen de varias palabras se deberían separan por el caracter "_".
    La constante se conformará mediante un sustantivo (o conjunto de sustantivos) con posibles adjetivos.
    De esta forma seguimos una norma ampliamente utilizada por los programadores.

    Ejemplos de definición de constantes:
    #define PI 3.14
    #define DIAS_DE_LA_SEMANA 7

[subir]

7.2 Utilización de defines, macros, constantes

  • Se deben utilizar constantes (const) o enumeraciones (enum) para definir constantes, evitando el uso de constantes con #define en lo posible.
    #define es una directiva para el preprocesador, la cual se aplica con caracter global antes de hacer ninguna comprobación por parte del compilador. Sus problemas son los consabidos efectos colaterales.

    Por ejemplo sería desaconsejable utilizar lo siguiente:
    // Definimos (desaconsejado) valores para datos y constantes con #define
    typedef int BOOLE
    #define FALSO 0
    #define CIERTO 1
    #define DIAS_DE_LA_SEMANA 7

    Sería mas correcto utilizar lo siguiente:
    enum EBoole // Definimos el tipo de dato EBoole
     {
      FALSO, // 0 por defecto
      CIERTO // Verdad = 1
     };
    const int nDIAS_SEMANA = 7; // La constante numero de dias de la semana

  • Se aconseja el uso de defines para sustituir el uso de valores numéricos en el código.

  • Es preferible usar funciones inline en lugar de macros creadas utilizando #define.
    Ya que #define es una directiva de precompilación y puede provocar efectos colaterales.

  • En general se aconseja limitar el máximo posible la visibilidad de defines, macros, constantes... Como norma general de protección de datos.

[subir]


[< anterior]       [indice]       [siguiente >] Oscar Valtueña García - "Manual de estilo C / C++"