我在一个简单的C ++应用程序中遇到了以下typedef
。
typedef char *(*TEXT_FUNCTION)();
我对C ++比较陌生,需要一些帮助来理解它的作用。稍后在代码中,TEXT_FUNCTION
在语句
TEXT_FUNCTION textfunction = reinterpret_cast<TEXT_FUNCTION>(
GetProcAddress(myDLLHandle, "getName")
);
查看GetProcAddress()
的{{3}},我理解该语句返回getName()
引用的DLL中myDLLHandle
函数的地址。我假设整个演员声明将getName()
函数的某种指针分配给textfunction
。
这准确吗? typedef
语句的每个部分是什么意思?
答案 0 :(得分:0)
typedef char *(*TEXT_FUNCTION)();
定义了一个名为TEXT_FUNCTION
的函数指针类型,它不带参数并返回char*
。
在按textfunction
函数的地址分配getName()
之后,可以将其命名为:
char* sth = textfunction();
与以下内容具有相同的效果:
char* sth = getName();
答案 1 :(得分:0)
类型声明应按通常的表达式评估的相反顺序阅读。
表达的通常评价就像
* // 4. dereference 3
(
* // 2. dereference 1
TEXT_FUNCTION // 1. read what is in TEXT_FUNCTION
)
(); // 3. call function 2
所以,类型声明
char *(*TEXT_FUNCTION)();
装置
char // 1. char
* // 2. a pointer to 1
(
* // 4. a pointer to 3
TEXT_FUNCTION // 5. TEXT_FUNCTION is 4
)
(); // 3. a function that takes 0 arguments and returns 2
因此,typedef
语句意味着将TEXT_FUNCTION
声明为指向带有0个参数的函数的指针,并返回指向char
的指针。