在c++程序(汇编)中使用变量
Using a variable across c++ programs (compilations)
这类问题在这里和其他地方已经被问过好几次了,但我似乎没有找到任何解决方案。到目前为止,我所"完成"的是,一个变量可以由两个不同的应用程序使用(一个应用程序通过系统命令调用另一个),但值不会从主应用程序传递到辅助应用程序。
代码与此相对应:
#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);
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何使用 gcc 内联汇编器代码访问成员变量
- 在 c++ 中实现内联汇编器以对变量进行异或操作的正确方法
- 汇编:C++堆栈变量地址不同/错误?
- 如何从汇编寄存器中获取字符串并将其存储在C++中的变量中
- 在c++程序(汇编)中使用变量
- Pep/8 汇编 - 将字符存储在变量中而不输入
- 汇编中的局部变量:它们比全局变量快吗?
- 扩展内联汇编:输入和输出相同的变量