je travaillais avec UEFI code lié pilote, et je suis tombé sur ceci:Utilisation de redéfinir le pointeur vide pour pointer vers une structure anonyme?
/* EFI headers define EFI_HANDLE as a void pointer, which renders type
* checking somewhat useless. Work around this bizarre sabotage
* attempt by redefining EFI_HANDLE as a pointer to an anonymous
* structure.
*/
#define EFI_HANDLE STUPID_EFI_HANDLE
#include <ipxe/efi/Uefi/UefiBaseType.h>
#undef EFI_HANDLE
typedef struct {} *EFI_HANDLE;
Le code source est dans ce chemin http://dox.ipxe.org/include_2ipxe_2efi_2efi_8h_source.html
Ceci est ma première rencontre avec une structure anonyme, et je ne pouvait pas faire la logique de redéfinir un void *
à un pointeur vers une structure anonyme. Quel genre de piratage la "tentative de sabotage de bizzare" fait allusion?
Détail intéressant est aussi '# define' et' # undef' autour de '# include'. Cela suggère que header utilise '# define' au lieu de' typedef', ce qui pourrait indiquer qu'il y a aussi d'autres WTF dans le code. Cela pourrait expliquer le ton agressif passif du commentaire ... – user694733