[問題] 一段 arguement 問題

看板C_and_CPP作者 (gecer)時間6年前 (2017/07/02 13:11), 編輯推噓7(7016)
留言23則, 6人參與, 最新討論串1/1
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

07/02 13:15, , 1F
強制轉型要符合function的要求
07/02 13:15, 1F

07/02 13:41, , 2F
Excel 接一串字串 然後你最後一個參數要放null他才知道
07/02 13:41, 2F

07/02 13:41, , 3F
停了
07/02 13:41, 3F

07/02 13:42, , 4F
但是他只接char pointer 所以這邊做個轉型
07/02 13:42, 4F

07/02 15:13, , 5F
這算C++09的餘毒 往後傳nullptr就不用這樣轉了
07/02 15:13, 5F

07/02 15:14, , 6F
不過說真的(char *)有點多餘 應該不用加也能過才對
07/02 15:14, 6F

07/02 18:32, , 7F
樓上正好在這裡不對, 因為 execlp 是可變參數
07/02 18:32, 7F

07/02 18:33, , 8F
第三參數之後是被 ... 抓起來的, 所以放 NULL 會變成數字 0
07/02 18:33, 8F

07/02 18:33, , 9F
必須要真的傳進一個指標才行, 所以才需要 (char*) 轉型
07/02 18:33, 9F

07/02 18:34, , 10F

07/02 18:34, , 11F
> since these are variadic functions, this pointer must
07/02 18:34, 11F

07/02 18:34, , 12F
> be cast (char *) NULL.
07/02 18:34, 12F

07/02 18:35, , 13F
所以理論上單傳 nullptr 也是錯的, 也需要轉型
07/02 18:35, 13F

07/02 18:36, , 14F
(因為 nullptr 的型態是 std::nullptr_t)
07/02 18:36, 14F

07/02 21:12, , 15F
傳 "" 可以嗎
07/02 21:12, 15F

07/02 23:24, , 16F
字元null記得是'\0'
07/02 23:24, 16F

07/02 23:25, , 17F
空字串=\=null
07/02 23:25, 17F

07/02 23:39, , 18F
原來是可變參數,我沒先查就推文了QQ
07/02 23:39, 18F

07/03 00:58, , 19F
@steve1012 啊這裡就不是要字元 null 啊...
07/03 00:58, 19F

07/03 01:01, , 20F
不過根據文件 (剛剛懶得看想說應該會有人直接回答) 它應
07/03 01:01, 20F

07/03 01:01, , 21F
該就是需要 NULL pointer 所以空字串也是不行
07/03 01:01, 21F

07/05 00:31, , 22F
我還想了一下 excel 為什麼要吃 null... 原來是 exec 啊
07/05 00:31, 22F

07/05 01:48, , 23F
ouch...居然犯了這低能錯誤 XD
07/05 01:48, 23F
文章代碼(AID): #1PM81h2q (C_and_CPP)