2017-05-29 64 views
-3

我试图为pointer.I创建存储有这样一段代码:如何创建的typedef指针

#ifdef SOURCE_CODE_EXPORTED 

static struct BasicIDymosimStruct*basicI = 0; 
static struct BasicDDymosimStruct*basicD = 0; 
struct BasicIDymosimStruct*getBasicIDymosimStruct() { 
    return basicI; 
} 
struct BasicDDymosimStruct*getBasicDDymosimStruct() { 
    return basicD; 
} 
void setBasicStruct(double*d, int*i) { 
    basicI = (struct BasicIDymosimStruct*)(i); 
    basicD = (struct BasicDDymosimStruct*)(d); 
} 
struct DymosimSimulator dataNoDll = { 0,0,"?????","?????",FALSE_ }; 
struct DymosimSimulator*dataNoDllPtr = 0; 
#endif 

内存分配我很喜欢写代码:

dymBasicD = (struct *) (calloc(1, sizeof(struct BasicDDymosimStruct))); 

dymBasicI = (struct *) (calloc(1, sizeof(struct BasicIDymosimStruct))); 

然而我收到一个错误消息:

: - C2332:无法从'*'转换为basicIDymosimStruct。

注意:我将这个C代码与C++混合使用。

任何想法,将不胜感激

+1

首先:'struct *'什么?其次:如果你用C++分配内存,使用'new'或'new []'。返回的指针可以传递给C函数。第三:'basicI =(struct BasicIDymosimStruct *)(i)'* what *? –

+2

@Someprogrammerdude你的意思是,'std :: make_unique'或'std :: make_shared' –

+3

1)你不能混用C和C++源代码!如果你编译为C++,它**是** C++,而不是C!相同的语法并不意味着相同的语义! 2)**从来没有**'typedef'指向一个数据类型的指针! 3)提供[mcve]和所需的信息。阅读[问]。 – Olaf

回答

2

如果你想typedef指针,使用下面的语法C/C++:

typedef int* IntPointer; 

而对于C++:

using IntPointer = int*; 

如果您想要键入一个指向函数的指针

typedef /*return value type*/ (*t_somefunc)(/* type1 */, /* type2 etc */);