【发布时间】:2010-09-19 23:35:01
【问题描述】:
在下面的代码 sn-p 中,我可以将 char * 替换为 const char * 并删除 strdup() 函数调用并直接获取 getopt() 设置的 optarg 值吗?建议我使用 const char * 来跳过 strdup 函数的使用。提前感谢您的帮助。
/* Code Snippet */
char *dir = NULL;
char *bld = NULL;
int chr;
while ( ( chr = getopt( argc, argv, "d:a:b:f:" ) ) != -1 ) {
switch ( chr ) {
case 'd': //Directory parameter
dir = strdup( optarg );
if (dir == NULL) { /*Error*/ }
case 'b': //Build parameter
bld = strdup( optarg );
if (bld == NULL) { /*Error*/ }
...other code...
}
}
我真的不明白这样做的必要性。
编辑:感谢您的回答。这真的很有帮助。我将代码修改为 const char * 并跳过了 strdup 调用。
谢谢, 丽菊
【问题讨论】:
-
我建议使用比每级一个字符更大的缩进;很难看到压痕对齐的位置。就个人而言,我使用 4 个空格; Linux 内核使用 8 个空格(实际上,一个制表位设置为 8)。
-
我使用的是制表符间距 4。但是当我在这里复制代码时,它没有显示空格,所以我对齐了它。很抱歉造成混乱。