gpt4 book ai didi

c - 如何执行缓冲区中的代码?

转载 作者:行者123 更新时间:2023-12-05 01:35:12 24 4
gpt4 key购买 nike

我想知道我是否可以执行存储在缓冲区中的代码。例如:

char buffer[20] = "printf(\"Stackoverflow\");";

有没有办法执行printf语句?

最佳答案

在某些所谓的脚本语言中,C 中没有类似eval 的结构。由于 C 通常被编译为机器代码而不是在运行时解释,因此实现此类功能需要一个具有某些 C 编译器或 C 解释器的平台才能使程序运行。

你可以看看这个问题:Is there an interpreter for C?并检查那里的链接或搜索 C 解释器。

并且只要您要执行的字符串在编译时已知(即您不根据某些输入创建它们),您就可以使用函数指针:

void print_hello(void) {
puts("Hello, world!");
}

void print_goodbye(void) {
puts("Goodbye.");
}

int main(void) {
void (*printer)(void) = print_hello;
printer();
printer = print_goodbye;
printer();
return 0;
}

您可以将 printer 设置为任何函数(具有兼容类型)的地址,因此您无需在编译时知道最终将调用哪个函数。

HTH

关于c - 如何执行缓冲区中的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com