日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Object C学习笔记22-#define 用法

發布時間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Object C学习笔记22-#define 用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  上一篇講到了typedef 關鍵字的使用,可以參考文章 Object C 學習筆記--typedef用法?。而在c中還有另外一個很重要的關鍵字#define.

  一. #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*2int 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 不能

?

總結

以上是生活随笔為你收集整理的Object C学习笔记22-#define 用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。