(1)在VC里面有很多函数返回值说明,经常是大写:
比如AFXAPI等等,不知道什么意思,在MSDN里面找也找不到(2)而且有的时候,一个函数声明前竟然有多个类型说明,例如:
BNACTLAPI TBNAError CALLTYPE BNACmdWork (TBNAhandle);
注:
BNACTLAPI------ #define BNACTLAPI extern "C" __declspec(dllimport)
TBNAError------typedef int TBNAError;
CALLTYPE------#define CALLTYPE __stdcall(3)不知道#define和typedef有什么区别啊?以上三点向各位请教!
然后goto definition就可以了看到原始类型了
#define
和typedef在这里我觉得差不多吧
比如#define iii 1000
typedef int IITT;
下面我们就可以用IITT来定义类型了。而不能用iii啊。
比如#define iii 1000
typedef int IITT;
下面我们就可以用IITT来定义类型了。而不能用iii啊。
比如#define iii 1000
typedef int IITT;
下面我们就可以用IITT来定义类型了。而不能用iii啊。
比如#define iii 1000typedef int IITT;
下面我们就可以用IITT来定义类型了。而不能用iii啊。
比如#define iii 1000typedef int IITT;
下面我们就可以用IITT来定义类型了。而不能用iii啊。
比如#define iii 1000typedef是定义一个自定义类型。
typedef int IITT;下面我们就可以用IITT来定义类型了。而不能用iii啊。
比如#define A_A 1000typedef是定义一个自定义类型。
typedef int IITT;下面我们就可以用IITT来定义类型了。而不能用A_A啊。
typedef是定义一个自定义类型。
你可以
#define III int;
然后
III i;
而 typedef是语法级的,在编译时进行。
就象有个人叫狗胜,觉得不好听,就又起了个永生
#define 时遇到永生就换成狗胜
typedef 时遇到永生就知道它是狗胜但不用换成狗胜这两个字罢了
哈哈
typedef 是定义一个数据类型使用TYPEDEF便于程序移植,
比如说 你可以定义一个 typedef int INTEGER,这样在程序里INTEGER就代表了int类型,当你的程序要移植时(比如放在64位或者16位的机子上运行时)那可能你的int类型都要改为long型,这时你就把原来定义的那句改为typedef long INTEGER就可以了,这样就大大增加了程序的可维护性,所以说对于大型程序typedef还是很有用的,而宏定义却很危险。
TBNAError------typedef int TBNAError;
CALLTYPE------#define CALLTYPE __stdcall
以上这些你都可以不看它的名字,而看它倒底会被替换成什么,因为所有的这些符号都只不是为了方便忘记或为了形成一致的名命形式而忆。
extern "C" __declspec(dllimport)
表明这是一个标准C函数,在Dll里用于向外输出,这样申明可以自动生成程序使用的.def文件具体可以分别以[extern "C"]、[__declspec(dllimport)]为关键字查看MSDN;
typedef int TBNAError;
表明可以像使用[int]一样的使用[TBNAError];
__stdcall 表明这是一个标准的WIN32的API格式的函数,它是表明一种参数的调用方式等范畴的申明,这也就是我们常用的WINAPI的定义.具体可以[__stdcall]为关键字查MSDN。
比如AFXAPI等等,不知道什么意思,在MSDN里面找也找不到关于这点你可以直接将其选中,点右键 go to define xxx,
去查看它的定义,一般都是一些宏,到最后都是一些格式申明,都可以通过MSDN查到详细的信息。