以下代码在GCC上编译时没有警告,但在Visual Studio 2005中发出警告.
const void * x = 0;
char * const * p = x;
Run Code Online (Sandbox Code Playgroud)
x指向未知类型的常量对象,p指向char的常量指针.为什么p的赋值会导致警告?
同样,这是C,而不是C++.谢谢.
之所以发生这种情况,是因为当你将一种类型的指针指向另一种类型时,有时会无意中完成(bug),因此编译器会向你发出警告.
因此,为了告诉编译器您确实打算这样做,您必须进行显式转换,如下所示:
const void * x = 0;
char * const * p = (char * const * )x;
Run Code Online (Sandbox Code Playgroud)
PS在我写的第一个地方" 大部分时间都是无意中完成的",但当他理所当然地说无效*专门用于此目的时,AndreyT让我重新考虑它.
| 归档时间: |
|
| 查看次数: |
8268 次 |
| 最近记录: |