大致要实现以下功能就是通过选择的data_type的值来初始化相应的变量来在后面的程序中用,我用的是VS2008,由于作用域的问题,之后用到变量时总出现很多变量未定义的错误,谁知道怎么解决么??
switch(data_type)
{
case 1:
{
BYTE* buffer_read = (BYTE*)malloc(number*sizeof(BYTE));
BYTE* buffer_write = (BYTE*)malloc(number1*sizeof(BYTE));
BYTE* buffer_reads[10];
break;
}
case 2:
{
unsigned short* buffer_read = (unsigned short*)malloc(number*sizeof(unsigned short));
unsigned short* buffer_write = (unsigned short*)malloc(number1*sizeof(unsigned short));
unsigned short* buffer_reads[10];
break;
}
case 3:
{
float* buffer_read = (float*)malloc(number*sizeof(float));
float* buffer_write = (float*)malloc(number1*sizeof(float));
float* buffer_reads[10];
break;
}
case 4:
{
double* buffer_read = (double*)malloc(number*sizeof(double));
double* buffer_write = (double*)malloc(number1*sizeof(double));
double* buffer_reads[10];
break;
}
default:
{
MessageBox(_T("读取类型错误!"));
break;
return;
}
}
switch(data_type)
{
case 1:
{
BYTE* buffer_read = (BYTE*)malloc(number*sizeof(BYTE));
BYTE* buffer_write = (BYTE*)malloc(number1*sizeof(BYTE));
BYTE* buffer_reads[10];
break;
}
case 2:
{
unsigned short* buffer_read = (unsigned short*)malloc(number*sizeof(unsigned short));
unsigned short* buffer_write = (unsigned short*)malloc(number1*sizeof(unsigned short));
unsigned short* buffer_reads[10];
break;
}
case 3:
{
float* buffer_read = (float*)malloc(number*sizeof(float));
float* buffer_write = (float*)malloc(number1*sizeof(float));
float* buffer_reads[10];
break;
}
case 4:
{
double* buffer_read = (double*)malloc(number*sizeof(double));
double* buffer_write = (double*)malloc(number1*sizeof(double));
double* buffer_reads[10];
break;
}
default:
{
MessageBox(_T("读取类型错误!"));
break;
return;
}
}
后面使用的代码写成模板在break之前调用,这样前面分配啥类型就都不重要了.代码也短了很多.
都定义到case上面
然后在case里面赋值就好了
到时候转一下
http://www.cppprog.com/2009/0609/124.html
然后用data_type来判断,然后struct1 str1
不知可否
template<typename T>
BOOL AllocMemoryFunc(int data_type,T datatype,int number,int number1,T *buffer_read,T *buffer_write, T* buffer_reads[])
{
if((data_type>=1)&&(data_type<=4))
{
T* buffer_read = (T*)malloc(number*sizeof(T));
T* buffer_write = (T*)malloc(number1*sizeof(T));
T* buffer_reads[10]; //这个10也可以用参数传进来,而且我觉得buffer_reads[10]这个就是定义一个指针数组,不用在这个函数里面
return TRUE;
}
else
{
return FALSE;
}
}
然后使用完毕后一定要free所有申请的内存 否则会内存泄漏 另外,我觉得data_type这个你最好用枚举,这样你得代码容易理解,容易维护,正规编程绝对没有用数字来代表某种含义的,那样你自己看还行 别人看会累死
学了其实不难 就怕你不学 不学看上去永远是那么高深莫测 其实很简单
void* buffer_write ;
void* buffer_reads; switch(data_type)
{
case 1:
{
buffer_read = malloc(number*sizeof(BYTE));
buffer_write = malloc(number1*sizeof(BYTE));
buffer_reads = malloc(10*sizeof(BYTE));
break;
}
//其他省略...
}这样也不可以?
void* buffer_write ;
void* buffer_reads[10]; switch(data_type)
{
case 1:
{
buffer_read = malloc(number*sizeof(BYTE));
buffer_write = malloc(number1*sizeof(BYTE));
break;
}
//其他省略...
}
指针都是四个字节。