从C中的另一个函数调用main函数

roh*_*hit 3 c program-entry-point function call

我有一个main函数,它在初始化期间运行一些函数,然后运行一个while循环,等待来自UART的命令.

当我看到一个特定的命令(让我们说重置)时,我调用一个返回值的函数.我想做以下事情:

  1. 保存返回的值
  2. 使用返回的值再次启动main函数.在main中的函数初始化期间需要返回值.

我是C的新手,我无法想出一种在main中保存变量值的方法.

Eth*_*eal 5

我理解的方式,你基本上有以下设置:

int main(int argc, char *argv[]) {
    int value = something_from_last_reset;
    perform_initialization(value);
    while(1) {
        int next_command = wait_for_command();
        if(next_command == RESET_COMMAND) {
            value = get_value();
            // somehow restart main() with this new value
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是您可以采取的一种方法:

// global
int value = some_initial_value;

void event_loop() {
    while(1) {
        int next_command = wait_for_command();
        if(next_command == RESET_COMMAND) {
            value = get_value();
            return; // break out of the function call
        }
    }
}

int main(int argc, char *argv[]) {
    while(1) {
        perform_initialization(value);
        event_loop();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这实际上允许您从事件循环中"转义"并重新执行初始化.