2008-09-23 14 views

Respuesta

19

Puede definirlos de forma segura, contrariamente a lo que afirman otros. La razón es que son solo macros. Solo afectan al preprocesador entre su definición y su indefinición. En su caso, eso será desde principios de windows.h a la última línea de windows.h. Si necesita encabezados de ventanas adicionales, los incluiría después de windows.hy antes de #undef. En su código, el preprocesador simplemente dejará los símbolos sin cambios, según lo previsto.

El comentario sobre el código anterior es irrelevante. Ese código estará en una biblioteca separada, compilada de forma independiente. Solo en el momento del enlace se conectarán, cuando las macros se hayan ido.

+1

+1 para corregir la locura de la mayoría de las otras respuestas. –

+1

Estoy de acuerdo con el comentario sobre el código anterior que es irrelevante, pero no estoy de acuerdo con el argumento. Las bibliotecas separadas incluyen archivos de encabezado que podrían usar 'near' y' far'. –

3

quizá:

#undef near 
#undef far 

podría ser peligroso aunque ...

+3

Más seguro en un archivo fuente que un encabezado ... –

0

mejor no hacerlo. Se definen por compatibilidad con versiones anteriores con código anterior; si se deshace de ellos de alguna manera y luego necesita usar parte del código anterior, se romperá.

7

UNDEFINE cualquier macro que no desea después de incluir windows.h:

#include <windows.h> 
#undef near 
#undef far 
1

Es probable que no quiere indefinido cerca y de lejos en todas partes. Pero cuando necesite usar los nombres de las variables, puede usar lo siguiente para definir la macro localmente y agregarla de nuevo cuando haya terminado.

#pragma push_macro("near") 
#undef near 
//your code here. 
#pragma pop_macro ("near") 
-1

Se podría argumentar que "cerca" y "lejos" no son nombres de variables muy descriptivos. ¿Ha considerado simplemente proporcionar detalles adicionales en su nombre de variable para resolver el conflicto (es decir, el más cercano, el más lejano)? Solo un pensamiento.

Cuestiones relacionadas