我有一个原型void* myFcn(void* arg)的函数,用作pthread的起点。 我需要将参数转换为一个int以供以后使用: int x = (int)arg; 编译器(GCC版本4.2.4)返回错误: file.cpp:233: error: cast from 'void*' to 'int' loses precision 什么是适当的方式来施加这个?
我今天刚看了一张照片,觉得我会很感激的解释。 所以这里是图片: 我发现这是令人困惑的,并想知道这样的代码是否可行。 我GOOGLE了图片,发现在这个 reddit条目中的另一张图片,这里是图片: 那么这个“螺旋式阅读”是有效的? 这是如何C编译器parsing? 如果对这个奇怪的代码有更简单的解释,那将会很棒。 除此之外,这些代码可以用吗? 如果是的话,何时何地? 有一个关于“螺旋规则”的问题,但我不只是问如何应用它,或者如何用这个规则来读取expression式。 我质疑这样的expression式和螺旋规则的有效性的使用。 关于这些,一些很好的答案已经发布。
据此, void*没有RTTI信息,因此从void*投出是不合法的,这是有道理的。 如果我没有记错, void* dynamic_cast正在gcc上工作。 你能否澄清这个问题?
假设我有以下代码: void* my_alloc (size_t size) { return new char [size]; } void my_free (void* ptr) { delete [] ptr; } 这安全吗? 或者必须将ptr为char*才能删除?
当一个指向特定types(比如int , char , float ,…)的指针递增时,它的值就会增加该数据types的大小。 如果一个指向大小为x数据的void指针递增,它如何指向前面的x个字节? 编译器如何知道将x添加到指针的值?