小编kot*_*moy的帖子

赋值<指向常量数组的指针> = <指向数组的指针>:不兼容的指针

当我编译这样的东西

double da[ 3 ] = { 2., 3., 4. };
double (* pda)[ 3 ] = &da;
double const (* cpda)[ 3 ] = pda; // gcc: warning; MSVC: ok
Run Code Online (Sandbox Code Playgroud)

gcc警告我

warning: initialization from incompatible pointer type [enabled by default]
Run Code Online (Sandbox Code Playgroud)

问题:这项任务有什么问题?是的,从技术上讲,这些是不同的类型,但我没有看到任何危险,double const (*)[ 3 ]看起来比我更安全double (*)[ 3 ].

我做了一些测试,结果让我更加困惑:

1)MSVC非常满意double const (* cpda)[ 3 ] = pda;分配,没有错误,没有警告.

2)gcc和MSVC都很满意

double d = 1.;
double * pd = &d;
double const * cpd = pd; …
Run Code Online (Sandbox Code Playgroud)

c pointers const compiler-warnings gcc-warning

9
推荐指数
2
解决办法
962
查看次数

标签 统计

c ×1

compiler-warnings ×1

const ×1

gcc-warning ×1

pointers ×1