在c++程序(汇编)中使用变量

Using a variable across c++ programs (compilations)

本文关键字:变量 汇编 c++ 程序      更新时间:2023-10-16

这类问题在这里和其他地方已经被问过好几次了,但我似乎没有找到任何解决方案。到目前为止,我所"完成"的是,一个变量可以由两个不同的应用程序使用(一个应用程序通过系统命令调用另一个),但值不会从主应用程序传递到辅助应用程序。

代码与此相对应:

 #ifndef avis_h
    #define avis_h
    #include "string"
    using namespace std;
    extern int fnu;
    #endif

这就是头文件avis_h。

主程序如下:

    #include "stdafx.h"
    ...
    #include "iostream"
    #include "avis_h.h"

    int fnu;
    int main(){fnu=3;system (app2);}

其中app2是辅助应用程序:

    #include "stdafx.h"
    ...
    #include "iostream"
    #include "avis_h.h"
    int fnu;
    int main(){cout<<fnu;Sleep(10);}

显示数字0而不是数字3。我尝试过其他方法,但到目前为止都没有成功。有人能告诉我如何将该值从主程序正确传递到辅助程序吗?

不能在这样的独立应用程序之间共享变量。

您可以将其作为参数传递给system命令:

//commandLine is app2 + " " + the parameter
system (commandLine);

细分:

std::stringstream ss; 
ss << app2; 
ss << " "; 
ss << fnu;
std::string commandLine = ss.str();
system(commandLine.c_str());

别忘了:

#include <sstream>
#include <string>

并通过第二应用程序中的CCD_ 2检索它。

或者你可以使用IPC,但在这种特殊情况下,这太过分了。

应用程序有不同的地址空间,如果您希望将一些数据从一个应用程序传递到另一个应用程,您可以在一个应用程式中写入文件,在另一个程序中读取文件,也可以使用底层操作系统支持的进程间通信机制之一。在类Unix系统上,这些机制是管道、fifo、消息队列和共享内存。你甚至可以使用插座。使用系统功能有些不太好。但是,如果您只想使用系统函数,这对于这种简单的进程间通信是可行的,请尝试将fnu的值作为参数传递给app2。

char buf [20];
sprintf (buf, "app2 %d", fnu);
system (buf);