程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Object C學習筆記22

Object C學習筆記22

編輯:關於C
 一. #define 簡介       在C中利用預處理代碼,可以讓你的代碼變得更加具有可讀性,更加符合個人的編碼風格,這也是C的強大之處。#define可以實現代碼的預處理,代碼在編譯之前會被提前處理。         二. 常量處理       語法: #define 常量名 產量值       #define 聲明主要用於將常量(或字符串)賦予有意義的名字,這個和.NET中的常量const比較的類似。   復制代碼 #import <Foundation/Foundation.h> #define NAME "abc" int main(int argc, const char * argv[]) {     @autoreleasepool {         NSString *str=[[NSString alloc] initWithCString:NAME];         NSLog(@"%@",str);     }     return 0; } 復制代碼     上面的代碼定義了一個 NAME常量,常量的值為"abc", 測試的代碼輸出了常量值。       請注意格式。#define 命令之後為常量名,再之後為所賦的代替值,用空格隔開,結尾不需分號。如果#define一旦被定義,那麼就不能被修改,一般#define定義在一個文件的頂部,在#import 之後。         三.多個常量定義       在上一篇寫到的typedef,使用typedef將同一個類型定義成不同的別名,而在#define中可以使用其他的#define定義。   復制代碼 #import <Foundation/Foundation.h> #define NAME "abc" #define A 2 #define B A*2   int main(int argc, const char * argv[]) {     @autoreleasepool {         NSString *str2=[[NSString alloc] initWithFormat:@"%d",B];         NSLog(@"%@",str2);     }     return 0; } 復制代碼     在代碼中定義了一個A常量2,而在定義的常量B中定義了 B =A*2, B的定義使用了#define A。         四. 宏定義       #define 聲明中還可以使用參數,並且可使用多個參數;這一特性被稱為“宏”   復制代碼 #import <Foundation/Foundation.h>   #define func(x,y) ( (x) * (y)) #define myfun(x) (x * 5) int main(int argc, const char * argv[]) {     @autoreleasepool {         int value=func(5, 5);         NSLog(@"%d",value);         int x=myfun(5);         NSLog(@"%d",x);     }     return 0; } 復制代碼     是不是很像一個函數的定義,在上面的代碼定義了兩個宏,func,myfun,他們都是一個表達式。使用帶參數的宏定義可完成函數調用的功能,又能減少系統開 銷,提高運行效率。         五. #define 和 typedef 的比較       (1)#define 宏定義可以使用 #ifdef ,#ifndef等來進行邏輯判斷,還可以使用#undef來取消定義       (2)使用typedef定義的變量類型其作用范圍限制在所定義的函數或者文件內,而使用#define 不能
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved