gpt4 book ai didi

C 用宏解串

转载 作者:行者123 更新时间:2023-12-02 04:14:23 25 4
gpt4 key购买 nike

有没有办法取消字符串作为宏参数提供?我需要能够调用名称在字符串中的函数。像这样的东西:

void hello() {
printf("Hello, world!");
}

call_func("hello");

我将如何实现 call_func。它将在一个模块中,即 #include d 并将用于调用主 c 文件中的函数。如果有另一种方法可以做到这一点,名称不必在字符串中,但可以作为参数传递给可以的函数。这就是我的意思:
#define call_func(X) X()
void do_something(Some_kind_of_C_func_type i) {
call_func(i)
}
void hello() {
printf("Hello, world!");
}

do_something(C_FUNC(hello));

最佳答案

好的,我看到了两种方法来做到这一点,这取决于你的目标是什么。

首先是函数指针;本质上将函数视为变量。见 here快速概览。

或者,您可以将要以这种方式调用的代码构建为共享库,然后使用 dlopen() 或 LoadLibrary() 之类的东西打开库,然后使用任一接口(interface)访问变量/函数。

关于C 用宏解串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3591904/

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