C學習筆記之預先處理指令

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   使用   ar   檔案   sp   

     一、什麼是預先處理指令
           預先處理指令是告訴編譯器在編譯之前預先處理的一些指令,有宏定義,檔案包括,條件編譯。
預先處理指令一般以 # 號開頭,能夠出如今檔案的不論什麼地方,作用於整個檔案。 二、宏定義
        宏定義分不帶參數的和帶參數的宏定義。
    1?不帶參數的宏定義
       
 #import <stdio.h>    #define AGE 10 // 宏名用大寫    int main()    {        int age = AGE; // AGE在編譯之前會替換成 10            printf("%d", age);           return 0;    }
       在編譯器編譯之前,代碼中的全部AGE會被替換成 10 ,當AGE的值要改動的時候僅僅須要在定義宏的地方改動一次,檔案裡的全部AGE都會被替換成新的值。  
    因為宏是在編譯之前被替換,所以由此引起的語法錯誤僅僅有等到編譯的時候才會對已經被替換在宏名作語法檢查。
        能夠在定義一個宏時,引用已經定義的宏,如:

////  main.m//  預先處理指令////  Created by 葬花 橋 on 14-5-18.//  Copyright (c) 2014年 itcast. All rights reserved.//#import <stdio.h>#define AGE 10 // 宏名用大寫#define AGE2 AGE+10 // 引用已經定義的宏int main(){    int age = AGE; // AGE在編譯之前會替換成 10    int age2 = AGE2;        printf("age1=%d\nage2=%d", age, age2);       return 0;}


       2?帶參數的宏定義
            帶參數的宏定義和看起來和函數有點相似 ,可是它們的本質的差別,宏定義僅僅是替換,不分配記憶體,沒有參數的傳送,更沒有返回值。


#define  SUM(a,b) a+b // 帶參數的宏定義

            這裡的宏SUM帶有參數,使用時會替換成這樣:



 三、檔案包括
       檔案包括先行編譯指令我們都在用,#include<>   #import 等等
它會將目標檔案的內容拷貝一份到當前檔案裡,這非常easy,沒有什麼能夠多說的。僅僅是要注意反覆包括,迴圈包括造成的錯誤,反覆定義錯誤或迴圈包括錯誤。
            可是假設用到了條件編譯就能避免反覆包括引起的反覆定義錯誤。
四、條件編譯
            
#if defined(SUM)        printf("SUM已經被定義!\n");      #endif 
       這現個預先處理指令表示假設SUM已經被定義就編譯printf語句,與些相反的是

        

#if !defined(SUM)        printf("SUM沒有被定義!\n");        #endif 

        假設SUM沒有被定義,就編譯printf語句

             與這兩個同樣作用的是

    

#ifdef SUM // 與#if defined(SUM)同樣    #endif    #ifndef SUM // 與#if !defined(SUM)同樣#endif 


            那麼在檔案包括時,使用條件編譯就能夠防止反覆包括同一個檔案。 



C學習筆記之預先處理指令

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.