c/c++语言开发共享从C中的另一个函数调用main函数

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

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

我是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; } 

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

    将你的main包装成无限循环。

     int main(void) { int init_val = 0; while (1) { // your code ... init_val = some_function(); } } 

    理论上这是可能的,但它有点打破范式,重复调用函数而不让它完成并返回将很快填满你的调用堆栈,除非你采取措施在编译器的后面展开它。

    更常见的解决方案是将main()函数编写为一个巨大的无限{1}循环。 你可以在一个内在循环或其他任何东西中完成你的所有操作,并且有条款,如果你得到你想要的新值,你可以掉到底部并循环回来,有效地重新运行主体的新状态。

      以上就是c/c++开发分享从C中的另一个函数调用main函数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/541762.html

      (0)
      上一篇 2021年1月4日
      下一篇 2021年1月4日

      精彩推荐