C ++在args之前的预期字符串文字

时间:2017-09-14 14:59:04

标签: c++

#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);

我知道这就是为什么我将参数分配给字符串向量。

2 个答案:

答案 0 :(得分:4)

__asm__()编译时构造。参数必须是字符串文字,而不是变量。

答案 1 :(得分:0)

您无法像这样动态执行汇编代码。编译器需要在编译时了解汇编指令,以便检查它们是否有效,但是您尝试在运行时传递它们。

编辑:一种解决方法是在python中编写一个包装程序(例如),将一个字符串文字注入到C ++ __asm__构造中,然后编译它并为你执行它。