我想从命令行参数获取文件名,所以我可以将它传递给文件打开函数,但是,argv []默认情况下似乎是const char**类型,即使它被定义为"const char*argv" []"在主要论点中.我的函数需要const char*,有没有办法转换这两个,还是什么?
int main(int argc, const char *argv[]) {
memory Memory;
Memory.loadROM(argv); // Error 'argument of type "const char **" is incompatible with parameter of type "const char *"'
}
Run Code Online (Sandbox Code Playgroud)
当在功能参数没有被引用类型中使用,const char *argv[]并且const char **argv是完全相同因为前者将被调整到后者.
根据N4296,第8.3.5p5节:
任何类型为"T of T"或"函数返回T"的参数都被调整为"指向T的指针"或"指向函数返回T的指针",
所以const char *argv[]是"类型数组const char *",因此调整为"指向const char *".
因为argv是类型const char **,你想取消引用它得到一个const char *:
Memory.loadROM(argv[1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |