-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++混合使用。
任何想法,将不胜感激
首先:'struct *'什么?其次:如果你用C++分配内存,使用'new'或'new []'。返回的指针可以传递给C函数。第三:'basicI =(struct BasicIDymosimStruct *)(i)'* what *? –
@Someprogrammerdude你的意思是,'std :: make_unique'或'std :: make_shared' –
1)你不能混用C和C++源代码!如果你编译为C++,它**是** C++,而不是C!相同的语法并不意味着相同的语义! 2)**从来没有**'typedef'指向一个数据类型的指针! 3)提供[mcve]和所需的信息。阅读[问]。 – Olaf