【发布时间】:2011-04-30 11:58:50
【问题描述】:
这是有效的
void *p = &X; /* some thing */
p += 12;
如果是这样,p 现在指向什么? 我有(第三方)代码可以做到这一点(并且可以干净地编译),我的猜测是 void * 被视为 char *。我信任的 K&R 对这个话题保持沉默
编辑:我的小测试应用程序在 gcc 4.1.1 上运行良好,并将 void * 视为 char *。但是 g++ barfs
我知道如何正确地做到这一点。我需要知道我是否必须清理这个代码库才能找到它完成的所有地方。
BTW gcc -pedantic 抛出警告
总结:
C 规范不明确。它表示在表示和用作函数参数方面 void* =char*。但它对指针算法保持沉默。
- gcc (4) 允许它并将其视为 字符 *
- g++ 拒绝它
- gcc -pedantic 发出警告
- vs2010 c 和 c++ 拒绝它
【问题讨论】:
标签: c void-pointers