Estoy incluyendo windows.h
en uno de mis archivos h (para usar CaptureStackBackTrace
), en un proyecto de Visual Studio. Al principio obtuve algunos errores del compilador debido al uso de los métodos st/max std y la macro con el mismo nombre en windows.h
, pero esto parece estar resuelto por #define NOMINMAX
, como he leído en otras publicaciones de SO. (Digo "parece" porque no puedo estar seguro hasta que todo mi proyecto vuelva a funcionar bien).incluyendo windows.h causa chocar con nombre de variable local
El problema es que algunos nombres de variables locales ahora rompen la compilación. La línea:
int grp1;
dentro de un método de clase, hace que el siguiente error:
error C2143: syntax error : missing ';' before 'constant'
mientras que el archivo CPP compila bien si cambio el nombre de la variable a grp1_
.
Por supuesto que puedo cambiar el nombre de la variable, pero sin embargo, tengo la sensación de que estoy haciendo algo mal, ¿no? ¿O es este un problema conocido al incluir windows.h
? ¿Hay alguna otra solución más elegante que no sea cambiar el nombre de la variable?
Si está en un encabezado que planea distribuir, probablemente sea una buena idea evitar el nombramiento colisión en caso de que el usuario necesite 'dlgs.h'. De lo contrario, debería agregar 'WIN32_LEAN_AND_MEAN' a todos sus proyectos. Ahorra tiempo de compilación y se deshace de algunas cosas molestas como esta. –