Linux C 에서 연결 연산 자 \ # \ #

1359 단어 linux
#include <stdio.h>

#define test(x) test ## x

#define DPRINT( fmt, args...) \

{ 	\

	printf("File : %s Funtion : %s Line : %d  \t", __FILE__, __FUNCTION__, __LINE__ );\

	printf( fmt, ##args );\

}



void test1(int a)

{

	DPRINT("Integer : %d 
", a); } void test2(char *s) { DPRINT("String : %s
", s); } int main(void) { test(1)(100); test(2)("hello"); return 0; }

인쇄 정보:
***************************************************
 File : test.c Funtion : test1 Line : 11         Integer : 100  File : test.c Funtion : test2 Line : 16         String : hello
***************************************************
 
#define DPRINT( fmt, args...) \{ \printf("File : %s Funtion : %s Line : %d  \t", __FILE__, __FUNCTION__, __LINE__ );\printf( fmt, ##args );\}
이렇게 정의 매크로 에 문제 가 있 습 니 다. 표준 printf () 함수 에 반환 값 이 있 습 니 다. 다만 우 리 는 거의 사용 하지 않 습 니 다.
다른 정의:
#define DPRINT( fmt, args...)     \  printf("File : %s Funtion : %s Line : %d  \t"fmt, __FILE__, __FUNCTION__, __LINE__ ,##args )
fmt 포인터
*****************************************
const  char *s= "string";
printf(s);
*****************************************
합 법 적 입 니 다. string 을 인쇄 할 수 있 습 니 다.
그러나 DPRINT (s) 는 비합법적 이다

좋은 웹페이지 즐겨찾기