roh*_*hit 3 c program-entry-point function call
我有一个main函数,它在初始化期间运行一些函数,然后运行一个while循环,等待来自UART的命令.
当我看到一个特定的命令(让我们说重置)时,我调用一个返回值的函数.我想做以下事情:
我是C的新手,我无法想出一种在main中保存变量值的方法.
我理解的方式,你基本上有以下设置:
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;
}
这是您可以采取的一种方法:
// 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;
}
这实际上允许您从事件循环中"转义"并重新执行初始化.
| 归档时间: | 
 | 
| 查看次数: | 3052 次 | 
| 最近记录: |