[問題] 函式的參數

看板C_and_CPP作者 (心的方向)時間10年前 (2014/06/17 23:42), 編輯推噓9(9019)
留言28則, 11人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 補充說明(Supplement): 問題不太會描述 請多見諒 目標是希望可以讀到函式參數的值 但不直接使用參數名 void fun1(int a, int b) { int c,d; c=???????? (將a的值10存到c 但是不須要寫出a ) d=???????? (將b的值20存到d 但是不須要寫出b ) } void main() { fun(10,20); } 希望有高手可以幫我解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.240.24 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1403019778.A.8C1.html

06/17 23:50, , 1F
undefined behavior
06/17 23:50, 1F

06/17 23:52, , 2F
????????
06/17 23:52, 2F

06/17 23:53, , 3F
開組語看a放什麼地方撈出來,然後祈禱compiler不要亂搞
06/17 23:53, 3F

06/17 23:55, , 4F
還有祈禱complier不要直接把a丟掉
06/17 23:55, 4F

06/17 23:59, , 5F
我似乎是遇到azu大說的問題 有讀到a的位置 但compiler後會
06/17 23:59, 5F

06/17 23:59, , 6F
會跑掉
06/17 23:59, 6F

06/18 00:05, , 7F
有什麼特別的理由需要這樣做嗎?
06/18 00:05, 7F

06/18 00:24, , 8F
因為有大量的函式需要紀錄下裡面那些參數 但每個函式參數
06/18 00:24, 8F

06/18 00:25, , 9F
名子卻又都不一樣 改起來工程浩大
06/18 00:25, 9F

06/18 00:45, , 10F
用 regular expression 抓就好了
06/18 00:45, 10F

06/18 01:10, , 11F
這種事交給gdb吧
06/18 01:10, 11F

06/18 02:23, , 12F
是要自己寫debugger?
06/18 02:23, 12F

06/18 03:06, , 13F
這看起來會因為call convention不同而必須有不同做法
06/18 03:06, 13F

06/18 03:09, , 14F
不過我覺得頗難 一來是function本身拿不到自己的pointer
06/18 03:09, 14F

06/18 03:10, , 15F
所以沒辦法hack自家的stack,二來則是我想就算拿的到
06/18 03:10, 15F

06/18 03:10, , 16F
應該也只有stdcall做的到你說的事情
06/18 03:10, 16F

06/18 03:11, , 17F
cdecl的話因為stack在caller那裡管 callee(以本例來講
06/18 03:11, 17F

06/18 03:11, , 18F
就是function自己)是沒辦法直接從記憶體hack到參數位置
06/18 03:11, 18F

06/18 03:34, , 19F
hum...stdarg搞不好可以在cdecl下做到
06/18 03:34, 19F

06/18 03:46, , 20F
gcc.gnu.org/onlinedocs/gcc/Return-Address.html
06/18 03:46, 20F

06/18 03:47, , 21F
__builtin_frame_address 這樣也許能抓
06/18 03:47, 21F

06/18 04:16, , 22F
ok 上面是正確解答 我回一篇給你
06/18 04:16, 22F

06/18 04:26, , 23F
http://tinyurl.com/kk3etza mac跑是對的 centos跑是錯
06/18 04:26, 23F

06/18 04:26, , 24F
的,看起來這不是通解.... 傷腦筋
06/18 04:26, 24F

06/18 17:02, , 25F
calling 兩個(動)名詞放一起 前面那個會隱式轉型當adj來用
06/18 17:02, 25F

06/18 18:19, , 26F
隱式轉型 XDDD
06/18 18:19, 26F

06/19 10:43, , 27F
幹嘛跟自己過不去XDD
06/19 10:43, 27F

06/19 18:16, , 28F
看完討論怎麼感覺一個一個手動改變數工程可能小些XD
06/19 18:16, 28F
文章代碼(AID): #1Je682Z1 (C_and_CPP)
文章代碼(AID): #1Je682Z1 (C_and_CPP)