[問題] 函式的參數

作者: chuckAI (心的方向)   2014-06-17 23:42:56
開發平台(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);
}
希望有高手可以幫我解惑 謝謝
作者: azureblaze (AzureBlaze)   2014-06-17 23:50:00
undefined behavior
作者: Nathan8489   2014-06-17 23:52:00
????????
作者: azureblaze (AzureBlaze)   2014-06-17 23:53:00
開組語看a放什麼地方撈出來,然後祈禱compiler不要亂搞還有祈禱complier不要直接把a丟掉
作者: chuckAI (心的方向)   2014-06-17 23:59:00
我似乎是遇到azu大說的問題 有讀到a的位置 但compiler後會會跑掉
作者: azureblaze (AzureBlaze)   2014-06-18 00:05:00
有什麼特別的理由需要這樣做嗎?
作者: chuckAI (心的方向)   2014-06-18 00:24:00
因為有大量的函式需要紀錄下裡面那些參數 但每個函式參數名子卻又都不一樣 改起來工程浩大
作者: purpose (秀才遇到肥宅兵)   2014-06-18 00:45:00
用 regular expression 抓就好了
作者: AstralBrain   2014-06-18 01:10:00
這種事交給gdb吧
作者: elfkiller (沒有暱稱)   2014-06-18 02:23:00
是要自己寫debugger?
作者: Killercat (殺人貓™)   2014-06-18 03:06:00
這看起來會因為call convention不同而必須有不同做法不過我覺得頗難 一來是function本身拿不到自己的pointer所以沒辦法hack自家的stack,二來則是我想就算拿的到應該也只有stdcall做的到你說的事情cdecl的話因為stack在caller那裡管 callee(以本例來講就是function自己)是沒辦法直接從記憶體hack到參數位置hum...stdarg搞不好可以在cdecl下做到gcc.gnu.org/onlinedocs/gcc/Return-Address.html__builtin_frame_address 這樣也許能抓ok 上面是正確解答 我回一篇給你http://tinyurl.com/kk3etza mac跑是對的 centos跑是錯的,看起來這不是通解.... 傷腦筋
作者: h520 (恩哈恩哈恩哈哈)   2014-06-18 17:02:00
calling 兩個(動)名詞放一起 前面那個會隱式轉型當adj來用
作者: LPH66 (-6.2598534e+18f)   2014-06-18 18:19:00
隱式轉型 XDDD
作者: lc85301 (pomelocandy)   2014-06-19 10:43:00
幹嘛跟自己過不去XDD
作者: michael0728n (蒜˙遠古)   2014-06-19 18:16:00
看完討論怎麼感覺一個一個手動改變數工程可能小些XD

Links booklink

Contact Us: admin [ a t ] ucptt.com