?? c語言教程---第九章預處理 - pcvc_net.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0051)http://www.pcvc.net/category/content.asp?sendid=248 -->
<HTML><HEAD><TITLE>C語言教程---第九章:預處理 - PCVC.NET</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px; LINE-HEIGHT: 150%
}
BODY {
FONT-SIZE: 12px; LINE-HEIGHT: 150%
}
.nav {
COLOR: #333333; TEXT-DECORATION: none
}
.nav:link {
COLOR: #000099; TEXT-DECORATION: none
}
.nav:visited {
COLOR: #000099; TEXT-DECORATION: none
}
.nav:hover {
COLOR: #ff6600; TEXT-DECORATION: underline
}
.d {
FONT-WEIGHT: bold
}
</STYLE>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY topMargin=0>
<TABLE height=146 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="3%" height=60><IMG
src="C語言教程---第九章預處理 - PCVC_NET.files/vc_pi1.gif" border=0></TD>
<TD width="97%" height=60>
<TABLE height=43 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="100%" height=18>
<P align=right><A class=nav href="http://www.pcvc.net/"><IMG
src="C語言教程---第九章預處理 - PCVC_NET.files/home.gif" border=0>首頁</A> |
<IMG src="C語言教程---第九章預處理 - PCVC_NET.files/tg.gif"
border=0>投稿</P></TD></TR>
<TR>
<TD width="100%" bgColor=#c0c0c0 height=1></TD></TR>
<TR>
<TD width="100%" height=18></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" colSpan=2 height=74>
<P align=center><EMBED src=images/pcvc.swf width=480
height=74></P></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="100%">您的位置:<A class=nav
href="http://www.pcvc.net/">PCVC.NET</A> >> <A class=nav
href="http://www.pcvc.net/category/sort.asp?cateid1=1">C/C++/MFC</A>
>> <A class=nav
href="http://www.pcvc.net/category/sort.asp?cateid1=1&cateid2=11">語言基礎</A>
>> 正文 </TD></TR>
<TR>
<TD width="100%" bgColor=#c0c0c0 height=1></TD></TR></TBODY></TABLE>
<TABLE height=1 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="100%" height=16> </TD></TR>
<TR>
<TD align=middle width="100%" height=1>
<TABLE height=1 cellSpacing=0 cellPadding=0 width="91%" border=0>
<TBODY>
<TR>
<TD style="FONT-SIZE: 20px" width="100%">
<P align=center><FONT face=新宋體><B><FONT
style="FONT-SIZE: 18pt">C語言教程---第九章:預處理</FONT></B></FONT></P></TD></TR>
<TR>
<TD style="FONT-SIZE: 12px" align=middle width="100%"
height=40>2003-4-10 8:11:56 VCOK
閱讀次數: 25257</TD></TR>
<TR>
<TD style="FONT-SIZE: 14px"
width="100%"></FONT><BR>預處理</FONT><BR></FONT><BR>概述</FONT><BR> 在前面各章中,已多次使用過以“#”號開頭的預處理命令。如包含命令# include,宏定義命令# define等。在源程序中這些命令都放在函數之外, 而且一般都放在源文件的前面,它們稱為預處理部分。</FONT><BR></FONT><BR> 所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理是C語言的一個重要功能, 它由預處理程序負責完成。當對一個源文件進行編譯時, 系統將自動引用預處理程序對源程序中的預處理部分作處理, 處理完畢自動進入對源程序的編譯。</FONT><BR></FONT><BR> C語言提供了多種預處理功能,如宏定義、文件包含、 條件編譯等。合理地使用預處理功能編寫的程序便于閱讀、修改、 移植和調試,也有利于模塊化程序設計。本章介紹常用的幾種預處理功能。</FONT><BR></FONT><BR>宏定義</FONT><BR> 在C語言源程序中允許用一個標識符來表示一個字符串, 稱為“宏”。被定義為“宏”的標識符稱為“宏名”。在編譯預處理時,對程序中所有出現的“宏名”,都用宏定義中的字符串去代換, 這稱為“宏代換”或“宏展開”。</FONT><BR></FONT><BR> 宏定義是由源程序中的宏定義命令完成的。 宏代換是由預處理程序自動完成的。在C語言中,“宏”分為有參數和無參數兩種。 下面分別討論這兩種“宏”的定義和調用。</FONT><BR></FONT><BR>無參宏定義</FONT><BR> 無參宏的宏名后不帶參數。其定義的一般形式為: #define 標識符 字符串 其中的“#”表示這是一條預處理命令。凡是以“#”開頭的均為預處理命令。“define”為宏定義命令。 “標識符”為所定義的宏名。“字符串”可以是常數、表達式、格式串等。在前面介紹過的符號常量的定義就是一種無參宏定義。 此外,常對程序中反復使用的表達式進行宏定義。例如: # define M (y*y+3*y) 定義M表達式(y*y+3*y)。在編寫源程序時,所有的(y*y+3*y)都可由M代替,而對源程序作編譯時,將先由預處理程序進行宏代換,即用(y*y+3*y)表達式去置換所有的宏名M,然后再進行編譯。</FONT><BR>#define M (y*y+3*y)</FONT><BR>main(){</FONT><BR>int s,y;</FONT><BR>printf("input a number: ");</FONT><BR>scanf("%d",&y);</FONT><BR>s=3*M+4*M+5*M;</FONT><BR>printf("s=%d\n",s);</FONT><BR>}</FONT><BR> 上例程序中首先進行宏定義,定義M表達式(y*y+3*y),在s= 3*M+4*M+5* M中作了宏調用。在預處理時經宏展開后該語句變為:s=3*(y*y+3*y)+4(y*y+3*y)+5(y*y+3*y);但要注意的是,在宏定義中表達式(y*y+3*y)兩邊的括號不能少。否則會發生錯誤。</FONT><BR> 當作以下定義后: #difine M y*y+3*y在宏展開時將得到下述語句: s=3*y*y+3*y+4*y*y+3*y+5*y*y+3*y;這相當于; 3y
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -