如何使用 argc 和 argv 调用函数?

How to call a function with argc & argv?

本文关键字:调用 函数 argv 何使用 argc      更新时间:2023-10-16

我目前正在尝试使用QT为现有的命令行程序创建GUI,作为学习练习。

最初的代码是用c编写的,我已经包含了c++位的c包装器。我拿了原始

int main(int argc, char **argv)

并将其转换为正常功能(更改了名称)。

我有几个qt复选框作为输入(例如,在cmdline中-v激活了verbose,所以现在我有一个verbose复选框,它使char verbose=to"v")

还有一些其他参数采用数字,例如-t 4表示4个线程。

原始程序中的选项是这样实现的:

while ((opt = getopt(argc, argv, "vqnrik1eE:P:NTX:F:t:h?f:o:s:")) != -1) {
    switch (opt) {
case 'v':
        verbose = 2;
        break;

etc

如何将所有这些不同的选项作为标准函数调用?如果可能的话,我可以将整个参数写入一个大字符串并输入,但我该怎么做呢?

谢谢,

您可能应该远离参数,直接设置控制变量:

if(verboseCheckBox->checked()){
    verbose=2;
}
//etc.

只需使用字符串数组进行调用,如下所示:

char* argv[4] = {executing_path, "-t 4","v","random_argument"};
const int argc = sizeof(argv)/sizeof(char*);
main(argc, argv);

请注意,第一个参数通常是在主函数中接收的可执行文件的完整路径。如果可能的话,我会保持同样的行为;有时,代码解析参数在1... n-1范围内执行,因此跳过数组中的第一个值。

既然你知道如何做到这一点,我也建议你不要这样做。由于你已经在源代码中了,你可能应该使用直接方法调用来设置选项,就像棘轮怪胎在他的回答中解释的那样。