影音先锋男人资源av站_狠狠色综合激情丁香五月_爱爱爱爱看视频_在线播放免费人成视频在线观看_少妇人妻综合久久中文字幕_国产午夜无码精品免费看_久久久久久夜精品精品免费啦_男人女人午夜视频免费_日本xxxx裸体xxxx_丰满人妻熟妇乱又仑精品

電子科大論壇-非清水河畔

 找回密碼
 注冊(cè)(開(kāi)放注冊(cè))
查看: 7117|回復(fù): 0
打印 上一主題 下一主題

[計(jì)算機(jī)類(lèi)] 不帶參數(shù)的宏在使用過(guò)程中的注意事項(xiàng)!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2006-10-28 10:05:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
宏的定義形式為: #define 宏名 宏體

要注意以下幾點(diǎn):

1、書(shū)寫(xiě)時(shí),#define與宏名之間、宏名與宏體之間均以(一個(gè)或多個(gè))空格隔開(kāi),也即從宏名后的第一個(gè)非空格字符開(kāi)始,直到本行結(jié)束之間的符號(hào)均作為宏體看待,看下面的例子:


  若宏替換命令行后面加了分號(hào),則該分號(hào)將成為宏體的一部分。
   如:#define N 8;
  則宏體應(yīng)該是8;(分號(hào)也包括在內(nèi)!)
  這時(shí),如果遇到語(yǔ)句
    for(i=0;i<N-1;i++){...}
  則宏替換后的形式為:
    for(i=0;i<8;-1;i++){...}
  該程序在編譯時(shí)將無(wú)法通過(guò),問(wèn)題也很難查出來(lái)。
  切記:定義宏的時(shí)候,宏體后面千萬(wàn)不要加分號(hào),除非你本來(lái)就需要在宏體中加入這個(gè)分號(hào)!


2、宏替換過(guò)程
  在進(jìn)行宏替換時(shí),要注意將宏名按定義時(shí)宏體的形式原封不動(dòng)地代入表達(dá)式中,不要增加任何其他的符號(hào)(尤其是小括號(hào)!),看下面的例子:

  有如下程序
  #define N 2
  #define M N+1
  #define NUM 2*M+1
  main()
  {
   int i;
   for(i=1;i<=NUM;i++) printf("%d\n",i);
  }
  則該程序中for循環(huán)執(zhí)行的次數(shù)是
  A)5  B)6  C)7  D)8

  為獲得宏名NUM的替換結(jié)果,先將宏名M的宏體N+1替換進(jìn)去,得到NUM的形式為:2*N+1+1,注意不能給M的宏體N+1隨意加小括號(hào),寫(xiě)成2*(N+1)+1,這是最容易犯的錯(cuò)誤!!然后將N的宏體替換進(jìn)去,最后得到NUM的形式為2*2+1+1,該表達(dá)式的值為6,因此上述題目的正確答案為(B)。這是2000年9月二級(jí)C中的一道選擇題。
  切記:在進(jìn)行宏替換時(shí),不要隨意給宏體加上小括號(hào),除非宏定義中本身就有小括號(hào)!

3、宏體不被替換的情況

(1) 雙引號(hào)中的與宏名相同的字符串將不被替換;
(2) 用戶標(biāo)識(shí)符中只有一部分與宏名相同的字符串將不被替換。

 如有宏定義 #define PI 3.1415926
 則:語(yǔ)句 printf("PI is 3.14");和 int myPI;中的"PI"均不被作為宏名而替換。

本版積分規(guī)則

手機(jī)訪問(wèn)本頁(yè)請(qǐng)
掃描左邊二維碼
本網(wǎng)站聲明
本網(wǎng)站所有內(nèi)容為網(wǎng)友上傳,若存在版權(quán)問(wèn)題或是相關(guān)責(zé)任請(qǐng)聯(lián)系站長(zhǎng)!
站長(zhǎng)電話:0898-66661599    站長(zhǎng)聯(lián)系QQ:12726567   
站長(zhǎng)微信:hainanok
請(qǐng)掃描右邊二維碼
www.myujob.com

小黑屋|手機(jī)版|Archiver|電子科大論壇-非清水河畔 ( 瓊ICP備10001196號(hào)-2 )

GMT+8, 2025-11-6 04:18 , Processed in 0.061955 second(s), 14 queries .

Powered by 校園招聘信息

© 2001-2020 電子科大論壇-非清水河畔校園招聘

快速回復(fù) 返回頂部 返回列表