看板 C_and_CPP 關於我們 聯絡資訊
execlp("ls", "ls", (char *)NULL ) 請問版上的大大們 上面語法 (char *)Null是什麼意思 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.174.37 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1498972267.A.0B4.html
james732: 強制轉型要符合function的要求 07/02 13:15
steve1012: Excel 接一串字串 然後你最後一個參數要放null他才知道 07/02 13:41
steve1012: 停了 07/02 13:41
steve1012: 但是他只接char pointer 所以這邊做個轉型 07/02 13:42
Killercat: 這算C++09的餘毒 往後傳nullptr就不用這樣轉了 07/02 15:13
Killercat: 不過說真的(char *)有點多餘 應該不用加也能過才對 07/02 15:14
LPH66: 樓上正好在這裡不對, 因為 execlp 是可變參數 07/02 18:32
LPH66: 第三參數之後是被 ... 抓起來的, 所以放 NULL 會變成數字 0 07/02 18:33
LPH66: 必須要真的傳進一個指標才行, 所以才需要 (char*) 轉型 07/02 18:33
LPH66: https://linux.die.net/man/3/execlp 07/02 18:34
LPH66: > since these are variadic functions, this pointer must 07/02 18:34
LPH66: > be cast (char *) NULL. 07/02 18:34
LPH66: 所以理論上單傳 nullptr 也是錯的, 也需要轉型 07/02 18:35
LPH66: (因為 nullptr 的型態是 std::nullptr_t) 07/02 18:36
uranusjr: 傳 "" 可以嗎 07/02 21:12
steve1012: 字元null記得是'\0' 07/02 23:24
steve1012: 空字串=\=null 07/02 23:25
james732: 原來是可變參數,我沒先查就推文了QQ 07/02 23:39
uranusjr: @steve1012 啊這裡就不是要字元 null 啊... 07/03 00:58
uranusjr: 不過根據文件 (剛剛懶得看想說應該會有人直接回答) 它應 07/03 01:01
uranusjr: 該就是需要 NULL pointer 所以空字串也是不行 07/03 01:01
s25g5d4: 我還想了一下 excel 為什麼要吃 null... 原來是 exec 啊 07/05 00:31
Killercat: ouch...居然犯了這低能錯誤 XD 07/05 01:48