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