我有一个疑问,是否有可能创建一个
typedef struct whatever
然后如果一个函数需要:
void function(char * something);
在主程序中调用函数时写:
function((char *) whatever);
是正确的吗?
谢谢!
答案 0 :(得分:2)
没有将结构强制转换为任何指针类型的已定义行为。很可能你的编译器会拒绝这样的强制转换,但是如果它接受了它,那么结果行为就不太可能有用了。
此外,您不能将类型(即whatever
)作为函数参数传递。
您可以想象地将指针传递给您的类型的对象:
int main() {
whatever my_whatever = { 0 };
function((char *) &my_whatever);
}
对于“工作”的某些定义,这将有效。是否明智取决于function()
的实施情况。