CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): HellCat (reentrant.�P)
날 짜 (Date): 1995년08월04일(금) 08시46분23초 KDT
제 목(Title): const 와 #define 매크로



우선 테크니컬리 말해서 # 쓰는 매크로 즉 프리프로세싱에
해당되는 것들은 콤파일러한테는 전혀 보이지 않는 것들입니다

콤파일타임에 # 가 들어가는 것들이 남아 있으면 콤파일이
아예 안되는 것이 정상이겠죠.

그리고 const 의 경우에 일단 그 스토리지 클래스가
read-only 가 되는 것이고 단지 옵티마이즈 하는 과정에서
바로 숫자로 대치 될수도 있겠지요.

즉 예를 들면

#include <stdio.h>

const int k=9;

foo(const int *ptr)
{
        printf("foo/address = 0x%x\n", ptr);
        printf("foo/%d\n", *ptr);
        *ptr = 10;
}

main()
{
        printf("%d\n", k);
        foo(&k);
        printf("%d\n", k);
}

이런 식의 코드에서 const 베리어블의 메모리가
할당 되어 있지 않을 경우는 곤란해 지겠지요.


인라인의 경우는 상황에 따라 인라인으로 들어갔으면
좋겠다는 것이지 항상 되는 것은 아니지요.

특히 룹같은 것이 들어가면 대부분 안될테고..

---
  if (t_snddis(KIDS[i].fd, (struct t_call *)NULL) == -1)
    { t_error("날 죽여라!!"); longjmp ((jmp_buf) HELL, -1); }
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.