#define BYTE unsigned char
#define WORD unsigned short int
#define DWORD unsigned int
#define SDWORD signed int
#define SBYTE signed char
#define SWORD signed short int
static SWORD neg_pow2[17]={0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767};
static DWORD start_neg_pow2=(DWORD)neg_pow2;
提示错误在最后一句 还望高手指教
1>.static DWORD start_neg_pow2=(DWORD)neg_pow2[1];//一个值
2>.static DWORD *start_neg_pow2=(DWORD*)neg_pow2;//指针
兄弟啊 找你那样改了还是不正确啊啊
我又仔细研究了一下 start_neg_pow2 应该存放的是地址
后面有两处用到了汇编,都是这一句
mov ebx,[start_neg_pow2]
把它定义成宏吧...
#define start_neg_pow2 (DWORD)neg_pow2
static DWORD start_neg_pow2=(DWORD)neg_pow2
从语义上说没问题:neg_pow2是一个地址(32位的),这本身也是个值,可用赋值给另一个整型变量。
试试这样改:
你看看BYTE/DWORD/WORD的定义,翻翻VC/VS里面的预定义,试试改用typedef
typedef DWORD unsigned int
还有:
short本身就是关键字,不需要short int
如果定义成这样就一点问题都没有...
static SWORD neg_pow2[17]={0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767};
static SWORD * start_neg_pow2=neg_pow2;
如果把你的文件扩展名,从"x.c"改成"x.cpp",你的代码也一点问题都没有....