본문 바로가기

Program Language/C18

[C] likely/unlikely macros http://kerneltrap.org/node/4705 아래처럼 define 되는 likely라는 매크로가 있다.#define likely(x) __builtin_expect((x),1) #define unlikely(x) __builtin_expect((x),0) 이것은 어떤 기능을 할까? if (__builtin_expect (x, 0)) foo ();위와같은 코드가 있다고 할 때, 컴파일러는 x가 0이 될 확률이 높다는걸 '알게'된다.그럼 foo 함수를 실행할 가능성이 적어지고, 컴파일러가 최적화를 할 가능성이 커진다. 구체적인 예를 보자.int testfun(int x) { if(x) { x = 5; x = x * x; } else { x = 6; } return x; }함수 testfun은 인.. 2012. 12. 14.
LNK2005 already defined in LNK1169: one or more multiply defined symbols found LNK2005: __invalid_parameter already defined inLNK1169: one or more multiply defined symbols found 되게 귀찮게한다. 비쥬얼 스튜디오..gcc같은 경우엔 strength 따지거나 아니면 그냥 warning으로 넘어가는데 2012. 11. 27.
다차원 배열 array에는 크게 두 가지가 있다. 1.int arr1[5]; 2.int *arr2;arr2 = (int*) malloc(sizeof(int)*5); 배열의 데이터가 1번은 스택에 저장되고 2번은 힙에 저장된다. 이건 1차원 배열에선 크게 상관이 없다. 1차원 배열에선 두 가지를 혼용하여 사용하여도 큰 상관은 없지만 2차원 이상 다차원 배열에선 문제가 된다. 2차원 배열을 보면 1.int arr1[2][5]; 2.int **arr2;arr2 = (int**) malloc(sizeof(int*) * 2);arr2[0] = (int*) malloc(sizeof(int)*5);arr2[1] = (int*) malloc(sizeof(int)*5); orint **arr2;arr2 = (int**) malloc.. 2012. 10. 3.
#ifdef #else #endif #elifdef #ifdef A...#endif #ifdef A...#else...#endif #ifdef A...#else#ifdef B...#else...#endif#endif #elifdef (else ifdef)는 어떻게 쓰는건지 모르겠음;#ifdef A...#elifdef B...#else...#endif 2012. 8. 9.