안녕하세요.
u-boot/board/aesop2440.c 파일을 보면 아래와 같은 함수가 있는데요,
#if 0 의 의미가 궁금합니다. 0이면 실행한다는 것인데, 어떤게 0 이되면 실행되는지가 궁금합니다.
그 동안 if(xxx == 0) 이렇게 된 것만 봐왔거든요.
--------------------------------------------------------
int SD_FS(void) // Check Partition table
{
int MBR_exist;
int i;
MBR_exist=0;
SD_Read(scratch, 0 , 1);
//printf("SD Read #0 donen");
if(scratch[511]==0xAA && scratch[510]==0x55)
{
if ( (scratch[450] == 0x01) || (scratch[450] == 0x04) || (scratch[450] == 0x06) ||
(scratch[450] == 0x0B) || /* FAT32 Partition */
(scratch[450] == 0x0C) || /* FAT32 Partition */
(scratch[450] == 0x55) ) /* FAT32 Partition */
MBR_exist=1;
}
if(MBR_exist) printf("(with MBR)nn");
else printf("(without MBR)nn");
#if 0
for (i = 0; i < 512; i++) {
if (!(i % 16)) printf("n%04x : ", i);
printf("%02x ", scratch[i]);
}
for(i=0;i<1024;i++) scratch1[i]=i;
SD_Write((unsigned char *)scratch1, 300000 , 8);
SD_Read((unsigned char *)scratch1, 300000 , 8);
for(i=0;i<1024;i++)
{
if(scratch1[i]!=i) printf("oops %dn",i);
}
#endif
if 구문을 전처리기형태로 만든 것입니다.
즉 저코드는 컴파일시에 소스에서 제거 되는것입니다. ^^
if (0) { } 으로 써도 되지만, 이렇게 될 경우는 코드가 들어가지만 실행되지는 않죠.
#if 0 은. 컴파일시에 코드도 아에 제거 해줍니다.
#if 0은 #endif 와 함께 쓰입니다.
긴줄을 주석 처리할때, /* */를 쓰거나 저런 형태를 사용합니다.
참고 하십시오.