(C++) 'std::string fil' 的声明隐藏了一个参数

(C++) declaration of 'std::string fil' shadows a parameter

我正在尝试制作自己的编译器(是),而 c++(cc 的 cpp 版本)给我一个错误提示:错误:'std::string fil' 的声明遮蔽了一个参数。

代码:

#include <iostream>
#include <cstring>
#include <string>

int compile(std::string fil)
{
    std::string cmd = "cc ", fil; // error here
    system(cmd);
    return 0;
}

int main(int argc, char* argv[])
{
   if (argc == 2) {
       std::string tmp = argv[1];
       compile(tmp);
   }
   return 0;
}

不确定你的问题是什么 - 但编译器是正确的:

<source>:7:30: error: redefinition of 'fil'
    std::string cmd = "cc ", fil; // error here
                             ^
<source>:5:25: note: previous definition is here
int compile(std::string fil)

您重新定义了参数。您应该重命名其中之一。

添加字符串

    std::string cmd = "cc " + fil; // error here