#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
string argstr[argc];
for(int c = 1; c++; c<argc) {
argstr[c].assign(argv[c]);
}
for(int c = 1; c++; c<argc) {
__asm__(argstr[c]); //This is where the error occurs
cout << argstr[c] << endl;
}
}
如果我尝试用MinGW编译它,我会收到以下错误:
Main.cpp: In function 'int main(int, char**)': Main.cpp:15:6: error: expected string-literal before 'args' asm(args);
我知道这就是为什么我将参数分配给字符串向量。
答案 0 :(得分:4)
__asm__()
是编译时构造。参数必须是字符串文字,而不是变量。
答案 1 :(得分:0)
您无法像这样动态执行汇编代码。编译器需要在编译时了解汇编指令,以便检查它们是否有效,但是您尝试在运行时传递它们。
编辑:一种解决方法是在python中编写一个包装程序(例如),将一个字符串文字注入到C ++ __asm__
构造中,然后编译它并为你执行它。