Macros y C++
C++ proporciona capacidades nuevas que suplantan, algunas de ellas, a las que ofrece el preprocesador de ANSI C. Estas nuevas capacidades mejoran la seguridad de tipos y la previsibilidad del lenguaje:
En C++, los objetos declarados como
const
se pueden utilizar en expresiones constantes. Esto permite que los programas declaren constantes que tienen información de tipo y valor. Pueden declarar enumeraciones que se pueden ver simbólicamente con el depurador. Cuando se usa la directiva#define
de preprocesador para definir constantes, no es tan precisa y no tiene seguridad de tipos. No se asigna ningún almacenamiento para un objetoconst
, a menos que en el programa se incluya una expresión que tome su dirección.La capacidad de función insertada de C++ suplanta las macros de tipo de función. Las ventajas de utilizar funciones insertadas respecto a macros son:
Seguridad de tipos. Las funciones insertadas están sujetas a la misma comprobación de tipos que las funciones normales. Las macros no tienen seguridad de tipos.
Se corrige el control de argumentos que tienen efectos secundarios. Las funciones insertadas evalúan las expresiones proporcionadas como argumentos antes de escribir el cuerpo de la función. Por lo tanto, no hay posibilidad de que una expresión con efectos secundarios no sea segura.
Para obtener más información sobre las funciones insertadas, vea inline, __inline, __forceinline.
Por compatibilidad con versiones anteriores, todos los servicios de preprocesador que existían en ANSI C y en las especificaciones anteriores de C++ se conservan para Microsoft C++.