c - 在函数内部定义外部变量

标签 c extern

假设我在头文件中有一个 extern 函数指针

extern void (__stdcall * const glEnable) (GLenum cap);

有没有办法在函数中定义它,因为它的定义依赖于其他东西

void glInit()
{
    ...
    Lib lib = loadLib("opengl");
    glEnable = procAddr(lib, "glEnable");
    ...
}

最佳答案

你可以这样做:

// .h file
extern void (__stdcall * glEnable) (GLenum cap);


// .c file
void (__stdcall * glEnable) (GLenum cap) = NULL;

void glInit()
{
    Lib lib = loadLib("opengl");
    glEnable = procAddr(lib, "glEnable");
}

现在,函数指针为空,直到有人调用 glInit。在调用 glInit 之前调用该函数指针是未定义的行为,我认为无论如何这就是您的意图。

关于c - 在函数内部定义外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67795472/

相关文章:

c - MPI_Isend 段错误

c - 外部变量名在 main 中不可见?

c++ - 外部变量和数组声明问题 C++

c - 结构本身的地址

c - 我不能使用 <search.h> 中的 sizeof(struct hsearch_data)

c++ - 如何使在.h中创建的变量成为程序的全局范围

c - 什么操作将 float 变成 "group"?

c - 即使没有声明也使用全局定义

c++ - 声明一个具有 C 调用约定但具有内部链接的 C++ 函数

c++ - 如何在另一个命名空间中使用常量定义的外部?