我只是想知道为什么我会收到此代码的警告:
void example(const int** x) {
// whatever
}
int main() {
int** x;
example(x);
return 0;
}
GCC的输出:
$ gcc example.cpp
example.cpp: In function ‘int main()’:
example.cpp:9:14: error: invalid conversion from ‘int**’ to ‘const int**’ [-fpermissive]
example(x);
^
example.cpp:1:6: note: initializing argument 1 of ‘void example(const int**)’
void example(const int** x)
^
从int**
转换为const int**
有什么问题?这不应该永远安全吗?
另外,为什么上面的代码不好,但这段代码没问题?
void example(const int* x) {
// whatever
}
int main() {
int* x;
example(x);
return 0;
}
我的原始代码使用struct mytype**
并且有相同的警告,所以我认为类型是什么并不重要。这是一个读C类型错误的案例吗?