Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué libro de texto contiene una definición como "DECLARE_HANDLE(HRGN);"?

¿Qué libro de texto contiene una definición como "DECLARE_HANDLE(HRGN);"?

Esto es de lo que estás hablando

#define DECLARE_HANDLE(name) struct name##__ { int usedef struct name##__ *name

;

El libro no lo menciona, porque este es un uso de la definición de macro. Es una definición de macro en sí misma y la expresión interna de definición de macro de Microsoft. Cuando tenga un conocimiento profundo de la definición de macro, puede usarla. Usted mismo Hay varios métodos de definición de macros en la oficina de desarrollo. Este es un uso de Microsoft. Por supuesto, los libros de texto profesionales en lenguaje C no lo mencionarán. El libro le dirá cómo definir definiciones de macros.

Generalmente común DECLARE_HANDLE(HDRVR);

DECLARE_HANDLE(HDTRCV);

Vea la definición de DECLARE_HANDLE de la siguiente manera:

#ifdef STRICT

p>

typedef void *HANDLE;

#define DECLARE_HANDLE(nombre) nombre de estructura##__ { int no utilizado }; >

# else

typedef PVOID HANDLE;

#define DECLARE_HANDLE(nombre) typedef HANDLE nombre

#endif

Por De forma predeterminada, VC/VS activa STRICT. En este caso, equivale a definir una estructura primero,

struct name##__

{

int. no utilizado;

}

Nombre de estructura Typedef##__ *nombre

De hecho, es equivalente a definir un nombre de tipo de puntero que es una estructura

En el caso de que no sea ESTRICTO, defina el nombre como tipo HANDLE. De hecho, HANDLE también es un tipo de puntero.

Luego

DECLARE_HANDLE(HDRVR);

DECLARE_HANDLE(HDTRCV);

declara HDRVR y HDTRCV como tipo de puntero.