मैं UEFI ड्राइवर से संबंधित कोड के साथ काम कर रहा था, और मैं इस पार आया:अज्ञात संरचना में पॉइंटर को शून्य पॉइंटर को फिर से परिभाषित करने का उपयोग?
/* 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;
पूर्ण स्रोत कोड इस पथ http://dox.ipxe.org/include_2ipxe_2efi_2efi_8h_source.html
इस गुमनाम संरचना के साथ मेरी पहली मुठभेड़ है में है, और मैं एक अज्ञात संरचना के लिए एक सूचक को void *
को फिर से परिभाषित करने का तर्क नहीं बना सका। "Bizzare sabotage प्रयास" पर एक हैक किस तरह का हैक संकेत देता है?
दिलचस्प विवरण '# परिभाषित' और' # undef' '' include' के आसपास भी है। यह सुझाव देगा कि हेडर 'typedef' के बजाय' # परिभाषित' का उपयोग करता है, जो यह संकेत दे सकता है कि कोड में अन्य डब्ल्यूटीएफ भी हैं। यह टिप्पणी के निष्क्रिय आक्रामक स्वर को समझा सकता है ... – user694733