아래의 소스를 입력하는데
#define hg(han,i,m,f)(\
(han).ph.flag=1,\
(han).ph.initial=i,\
(han).ph.medial=m,\
(han).ph.final=f,\
(han).code\
)
이렇게 되어 있는데
한번 \를 없애니까 소스에서 엔터키를 쳐서 다른 라인으로 넘어가면 그 다음 라인은 #define문에 적용이 않되는 거 같더군요.
아무래도 다음행도 적용시킬때 사용하는거 같은데 #define같은 전처리기문 뿐만아니라 다른 함수에서도 '\'의 구체적인 용도가 무엇인지 알고 싶네요.
그리고 이 소스는 한글문자를 입력하면 코드를 보여주는 프로그램인데요
cmd창에서는 한글이 완성형이라서 코드가 완성형 코드만 보이던데
초성중성종성 단위로 볼 수 있도록 한글 조합형을 띄워놓은 상태에서 이 프로그램을 실행 할 방법은 없을까요?
답변 주시면 좋겠습니다.
#include <stdio.h>
typedef unsigned char byte;
union hangul{
unsigned code;
struct{
unsigned final: 5;
unsigned medial: 5;
unsigned initial: 5;
unsigned flag:1;
}ph;
}han={0xaa97};
#define hg(han,i,m,f)(\
(han).ph.flag=1,\
(han).ph.initial=i,\
(han).ph.medial=m,\
(han).ph.final=f,\
(han).code\
)
int main()
{
char s[128];
printf("Initial value:%6x\n\n",han.code);
printf ("Bit-fields test:\n");
han.ph.flag=1;
han.ph.initial=0x0a;
han.ph.medial=0x14;
han.ph.final=0x17;
printf("Combined Hangul code:%06x\n\n",han.code);
printf("Combination test:\n");
printf("Combined Hangul code:%06x\n",hg(han,0x0a,0x14,0x17));
do{
printf("\nEnter one Korean syllable");
if(*gets(s)=='\0')break;
printf("1st byte:%#04x,2nd byte:%#04x\n",
(byte)s[0],(byte)s[1]);
han.code=(byte)s[0]<<8|(byte)s[1];
if(han.ph.flag!=1)
printf("\nNot Korean!\n");
else{
printf("Combined Hangul code:%#06x\n",han.code);
printf("Initial code:%#04x ",han.ph.initial);
printf("Medial code:%#04x ",han.ph.medial);
printf("Final code:%#04x\n",han.ph.final);
}
}while(1);
printf("\nThe End.\n");
}