c++ - 全局使用的 Typedef 变量?

标签 c++ global typedef

假设我们有这个声明的源文件:

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/

相关文章:

c - 在 C 中修改使用 typedef 构造的 MyType 时出错

c++ - 为什么我不能访问静态多态派生类中的 protected 成员?

c++ - c++中非void return函数模板的显式方法

c++ - 分析用 C++ 为 Python 编写的共享库/插件?

PHP 避免静态类以避免依赖,但我需要在任何地方使用全局

c++ - 这个c++ typedef有什么问题?

c++ - 使用 Arduino Mega 和 Simple-H HV Motor Shield 控制直流电机

c++ - 为 const global 跳过 extern 仍然可以正常工作

javascript - gulp 任务在没有全局对象的情况下共享一个公共(public)设置

C++ - 使用指向成员函数的函数指针的问题