傳入的全局變量我定義了一些int類型的全局變量,我希望它們與命令行參數匹配,以避免if
語句帶有strcmp
的連續鏈。例如,如果我已經定義了全局變量myvar
,並且用戶輸入myvar
作爲命令行參數,我希望能夠引用myvar
並使用argv[]
對其執行操作。這可以做到嗎?引用使用argv []
編輯我的問題只是爲了多一點明確:
目前,我不得不這樣做:
int* A;
int* B;
int* C;
int set(void)
{
if (strcmp((gargv[2]), "A") == 0)
{
*A = atoi(gargv[3]);
return *A;
}
else if (strcmp((gargv[2]), "B") == 0)
{
*B = atoi(gargv[3]);
return *B;
}
else if (strcmp((gargv[2]), "C") == 0)
{
*C = atoi(gargv[3]);
return *C;
}
else
{
errx(EX_USAGE, "Invalid");
}
}
int main (int argc, char** argv)
{
gargv = argv;
void* mem_chunk = calloc(5, sizeof(int));
A = &mem_chunk[1];
B = &mem_chunk[2];
C = &mem_chunk[3];
if (strcmp(argv[1], "set") == 0)
{
set();
}
}
但它會少的方式繁瑣,只是做這樣的事情,在那裏我可以設置argv[2]
到argv[3]
,它引用了全局變量A,B,或C:
int* A;
int* B;
int* C;
int set(void)
{
gargv[2] = gargv[3];
// example, if A and 10 given by user then set A = 10 and return
}
int main (int argc, char** argv)
{
gargv = argv;
void* mem_chunk = calloc(5, sizeof(int));
A = &mem_chunk[1];
B = &mem_chunk[2];
C = &mem_chunk[3];
if (strcmp(argv[1], "set") == 0)
{
set();
}
}
是的,使用的strcmp鏈 –
或者使用'getopt',並根據需要通過所需要的參數和值。匹配的全局變量看起來好像是一種無所謂的方法,但我並不完全清楚你想實現的目標。 –