我没有得到这个代码.看起来它正在执行某种类型的转换或使用函数指针,但我不确定.如果有人能帮助我,我将不胜感激.谢谢.
const char string[]="Hello!";int main() { (*(voID (*)()) string)(); //ObvIoUsly,my problem is this line :) return 0;}解决方法 首先,让我们使用 cdecl来解释内在的胡言乱语:
$cdeclcdecl> explain (voID (*)())cast unkNown_name into pointer to function returning voID
所以(voID(*)())string将字符串转换为函数指针.然后取消引用函数指针以调用底层函数.这条线相当于
voID (*fp)() = (*(voID (*)()) string)();(*fp)();
这(在大多数机器上)尝试执行“Hello!”作为机器代码.它可能会在具有虚拟内存的计算机上彻底崩溃,因为数据通常标记为不可执行.如果它没有崩溃,它就不可能做任何连贯的事情.无论如何,这不是有用的代码.
这里唯一要学习的是cdecl工具可以用于理解或编写复杂的C类型和声明.
总结以上是内存溢出为你收集整理的也许是函数指针或转换问题.不确定全部内容,希望文章能够帮你解决也许是函数指针或转换问题.不确定所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)