Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/07/2015, 16:03
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Desplegar datos de un array con inicializacion universal c++

casi que para calcular el tamaño del array usaría una macro

Código C++:
Ver original
  1. #define NUM_ELEMS(x) (sizeof(x)/sizeof(*(x)))

aunque si tiramos de recursos, nos encontramos con una macro un pelín más compleja pero con menos margen de error. Esta macro viene del projecto Google chromium:

Código C++:
Ver original
  1. #define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))

La gracia de esta macro es que 0[x] en los compiladores de C equivale al clásico x[0]... pero en los compiladores de C++ se producirá un error si x es una clase que sobrecarga el operador []... vamos que es una especie de seguro que evita que usemos la macro con objetos.

¿Por qué usar una macro aquí? para evitar repetir el código cada dos por tres:

Código C++:
Ver original
  1. for(int i = 0; i < NUM_ELEMS(x); i++){
  2. cout<<x[i]<<endl;

Un saludo