亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12
最近訪問板塊 發(fā)新帖
樓主: er
打印 上一主題 下一主題

幫忙寫個宏定義 [復(fù)制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2006-09-11 09:47 |只看該作者
另外又有個需求,想打印出一個指針指向的地址中的內(nèi)容,本來不難,但是有個前提很變態(tài),就是調(diào)用一次終端輸出函數(shù),會自動換行,大家看看,有沒有好辦法,下面是我的硬編碼


  1. void my_printf(const char *id, const void *ptr)
  2. {
  3.         const char *array = (const char *)ptr;
  4.         sdebug_printf(LOCAL_DBG_LVL_NOTES,
  5.                                                 "%s: "
  6.                                                 "%02x%02x%02x%02x "
  7.                                                 "%02x%02x%02x%02x "
  8.                                                 "%02x%02x%02x%02x "
  9.                                                 "%02x%02x%02x%02x ",
  10.                                                 id,
  11.                                                 array[0], array[1], array[2], array[3],
  12.                                                 array[4],        array[5], array[6], array[7],
  13.                                                 array[8], array[9],        array[10], array[11],
  14.                                                 array[12], array[13], array[14], array[15]
  15.                                                 );
  16. }
  17. #define P_HEX_16(arg) my_printf(#arg, arg)
復(fù)制代碼

論壇徽章:
0
12 [報告]
發(fā)表于 2006-09-11 09:56 |只看該作者
原帖由 er 于 2006-9-11 09:47 發(fā)表
另外又有個需求,想打印出一個指針指向的地址中的內(nèi)容,本來不難,但是有個前提很變態(tài),就是調(diào)用一次終端輸出函數(shù),會自動換行,大家看看,有沒有好辦法,下面是我的硬編碼


lz參考一下我在主題:給大家出一個可能有一點(diǎn)用處的題目   ( 思一克 發(fā)表于:2006-08-17 16:56 )里那個函數(shù)應(yīng)該可以。更多其他解決方案里面也有。


  1. static void print_memory(const char *name, const void *mem, unsigned int len)
  2. {
  3.         void *storage = (void *) mem;
  4.         int i;
  5.         printf("\nmemory dump start <%s>\t ---------------{", name, mem);
  6.         for (i = 0; i < len; i++) {
  7.                 int h = * (unsigned char *)(storage + i);
  8.                 if (i % 16 == 0) printf("\n%.*xh: ", 8, (i & 0xFFF0) + (int) mem);
  9.                 printf("%.*X ", 2, h);
  10.         }
  11.         printf("\nmemory dump end  <%s>\t ---------------}\n", name);
  12. }


  13. #define log_printbuf(buf, len) \
  14.         do { \
  15.                 const void *mem = (const void *) buf; \
  16.                 printf("%s | LINE %d\t"#buf" (%d) at (%p)", __FILE__, __LINE__, len, mem); \
  17.                 print_memory(#buf, mem, len); \
  18.         } while (0)

復(fù)制代碼


對樓主的需求函數(shù)做了點(diǎn)小改動,在此基礎(chǔ)上,可調(diào)整成樓主需要的格式。


  1. int main()
  2. {
  3.     char buf[256] = {0,};
  4.     buf[0] = 0;
  5.     buf[1] = 0;
  6.     buf[2] = 1;
  7.     strcpy(buf+3, "ABCDSKKKKLKKKKASKK" ) ;
  8.         log_printbuf(buf, 56);
  9. }

  10. 測試輸出格式為:
  11. demo04.c | LINE 58      buf (58) at (0xfee771a0)
  12. memory dump start <buf>  ---------------{
  13. fee771a0h: 00 00 01 41 42 43 44 53 4B 4B 4B 4B 4C 4B 4B 4B
  14. fee771b0h: 4B 41 53 4B 4B 00 00 00 00 00 00 00 00 00 00 00
  15. fee771c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  16. fee771d0h: 00 00 00 00 00 00 00 00 00 00
  17. memory dump end  <buf>   ---------------}
復(fù)制代碼

[ 本帖最后由 ftInternet 于 2006-9-11 10:00 編輯 ]

論壇徽章:
0
13 [報告]
發(fā)表于 2006-09-11 10:10 |只看該作者
謝謝樓上,但是我的要求很變態(tài)調(diào)用一次sdebug_printf函數(shù)會自動換行(沒加換行符\n),所以很頭疼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP