전처리기 단계에서 #연산자를 사용하면 C스타일의 문자열을 생성한다. 가령 10이라는 정수를 # 10 으로 하게되면 문자열 '10'으로 변환되며 이를 활용 할 수 있다.
#import <Foundation/Foundation.h>
#define printint(var) printf(# var " = %i \n" , var)
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//숫자를 입력 후 숫자의 값을 C스타일 문자열로 선언 출력 후 입력된 값을 %i로 출력
printint( 100 );
-> 100 = 100으로 출력하게 된다.
[pool drain];
return 0;
}
##연산자는 매크로 정의에서 두개의 토큰을 합치는 데 사용한다. 따라서 전처리기의 단계에서 num1, num2, num3 ...과 같은 공통문자열이 되는 변수 값이 있다고 할 때 토큰그룹 1을 num이라고 하고 토큰 그룹2를 뒤에 오는 숫자라고 할 때 이 둘을 조합하여 필요한 변수의 값에 접근할 수 있다. num ## 1은 num1을 의미하는 것이고 num ## 2는 변수 num2를 지칭하는 것이다.
#define printStrX01( n ) printf( "%i \n" , x ## n)
위의 코드는 x1~n의 변수로 접근하여 그 값을 출력하는 매트로이다.