gpt4 book ai didi

c++ - 为什么在 C++ 中必须从 void 指针进行类型转换?

转载 作者:太空狗 更新时间:2023-10-29 19:58:52 30 4
gpt4 key购买 nike

<分区>

我在嵌入式 C 中多次使用类似的代码。

#include <stdio.h>

int g_uArray[5] =
{ 1, 1, 2, 3, 5};

void* foo( int uIndex );

int main()
{
int* uVar;
uVar = foo( 2 );
printf( "Value = %u\n", *uVar );
return 0;
}

void* foo( int uIndex )
{
return (void*) &g_uArray[uIndex];
}

上面的代码在用gcc编译时完美运行,但在用g++编译时抛出错误

invalid conversion from ‘void*’ to ‘int*’

对于行

uVar = foo( 2 );

但是它可以通过给定 -fpermissive 标志来编译。现在,我的问题是为什么 C++ 给出错误如此重要(gcc -Wall 甚至不给出警告)。如果我使用 -fpermissive 进行编译,它会产生一些运行时问题吗?

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com