在下面的代碼片段中,我可以將char *替換爲const char *並刪除strdup()函數調用,並直接採用由getopt()設置的optarg值?我建議使用const char *來跳過strdup函數的用法。提前感謝幫助。當在C中使用getopt時,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)。 – 2008-10-30 23:10:39