RYU*_*AKI 6 c c++ pointers void-pointers implicit-conversion
我需要在源代码中找到所有这些地方,其中隐式转换任何类型的指针void *或停止这些隐式转换的方法.
例如:
int * 至 void *char * 至 void *Base * 至 void *是否有任何gcc警告或错误标志,它会检测指针被隐式转换为的所有这些行void *?
假设你有一个简单的程序,例如
#include <string.h>
int main()
{
char* apples = "apples and pears";
char fruit[1024];
void* avoid;
int aint;
float afloat;
avoid = &aint;
avoid = &afloat;
memcpy(fruit, apples, strlen(apples) + 1);
}
Run Code Online (Sandbox Code Playgroud)
这里有一个技巧,可以告诉您一些隐式转换发生在哪里。将其添加到程序的开头
#define void double
Run Code Online (Sandbox Code Playgroud)
你会得到很多编译错误:包括发生隐式转换的地方。它不会发现 void* = double* 所以你需要重试
#define void int
Run Code Online (Sandbox Code Playgroud)
发现其余的。
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |