我在编程时,比较喜欢用最原始的数据类型,如:int bool char short long float double true false,如果有需要再加上unsigned也不觉得长,并且在编辑器中这些类型是蓝色的,不喜欢使用 BOOL BYTE LONG WORD DWORD TRUE FALSE等在编辑器中显示为黑色的大写字母,可能是我长期写过C语言形成的习惯吧,转到C++后习惯难改。但是看到很多人和MFC和教科书都使用BOOL BYTE WORD DWORD等,如果仅仅是习惯不同倒无所谓,既然有这么多人使用,会不会有我还没有掌握的技巧和优点呢?特向高手请教一下。
你一直用MYINT 来定义变量。有一天你发现你的工程里用MYINT定义的变量都需要用float型才合适,这个时候你只需要将原来的typedef改为 typedef float MYINT 就好了。个人理解。
如果是MFC的项目就用DWORD 之类
如果没有MFC的话就用unsigned long 之类
还有,就是尽量用C++的思维方式(面向对象)去考虑问题。这才是根本
详见 C99标准,或者C++标准。)
#if (!defined (_MAC) && (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)))
typedef __int64 LONGLONG;
typedef unsigned __int64 ULONGLONG;#define MAXLONGLONG (0x7fffffffffffffff)
#else#if defined(_MAC) && defined(_MAC_INT_64)
typedef __int64 LONGLONG;
typedef unsigned __int64 ULONGLONG;#define MAXLONGLONG (0x7fffffffffffffff)
#else
typedef double LONGLONG;
typedef double ULONGLONG;
#endif //_MAC and int64#endif看看这段代码楼主就会明白了,不同的系统平台这些大小的数据类型可能对应不同的基本数据类型
我想把这个Dll作为子进程使用,觉得写个一般的C++的main调用这个Dll中的函数就可以了。
但是,我遇到的了问题:
这个Dll中头文件中用到了BOOL BYTE LONG WORD DWORD 等类型,我就用相应的int bool char short 替代,结果不能找到其中的函数,就是说无法调用。
我一开始中还以为BOOL和bool不一样呢,所以虽然有VA但每次都改成bool,这回学习了,以后都用BOOL了。
而bool是C/C++专有的类型。其它的typedef和原始类型应该不会引起DLL链接失败问题。同意楼上诸位,typedef正是为了保证可移植性。另外,关于BOOL和bool,多啰嗦两句。
BOOL是整型,值域也是整型的值域;而bool编译器限定了其值域只有true和false两个值。
所以BOOL型变量之间是不可以直接用==或!=做比较的(风险很大),而bool型可以。