假设我们有这个声明的源文件:
typedef VOID ( NTAPI *my_RtlInitUnicodeString ) (
PUNICODE_STRING DestinationString,
PCWSTR SourceString
);
my_RtlInitUnicodeString rtlInitUnicodeString;
//static has same effect
任何在源文件内部函数中使用 rtlInitUnicodeString 的尝试都需要像这样“重新定义”:
my_RtlInitUnicodeString rtlInitUnicodeString ....
单击任何源文件内部函数中使用的 rtlInitUnicodeString 的“定义”[VS] 总是将我们带到它的家:Winternl.h 而不是源文件范围的声明。这是编译器限制还是有其他方法可以使 rtlInitUnicodeString 对所有人可用?
最佳答案
您的程序中不应有多个变量定义。要使用来自不同编译单元的变量,每个使用它的编译单元都应该包含一个带有变量声明的头文件。声明应以关键字“extern”开头。这就是全局变量在 C 中的工作方式,它与 typedef 无关。
关于c++ - 全局使用的 Typedef 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248470/