반응형

2022/10/26 3

[C] 매크로 함수 이해하기

아래와 같은 코드가 있습니다. #include int add_int(int x, int y); float add_float(float x, float y); #define fun( name0, name1, x, y )name0##_##name1(x,y) #define out( name0, name1, data )out_##name1(name0, name, data) #define out_int(name0, name1, data)printf(#name0"_"#name1 ": [ %d ]\n", data) #define out_float(name0, name1, data)printf(#name0"_"#name1 ": [ %f ]\n", data) void main() { int ia = 200, ib = 3..

[C] 매크로 함수에서 do~while(0)을 쓰는 이유

매크로 함수를 보다보면 do~while(0) 형태로 되어있는것을 보게 됩니다. #define add(a,b,c) do{a = a + b; }while(0) 왜 이렇게 사용하는지 한번 알아볼께요. 아래는 일반적인 매크로 함수 입니다. #include #define add(a,b,c) {a = a + b; \ c = a + b;} void main() { int a = 300, b = 200, c; if (a > b) { add(a, b, c); //if에 { } 를 사용! } else { printf("Test"); //else에 { } 를 사용! } printf("[ %d %d %d] \n", a, b, c); } 위 코드를 컴파일 해보면 정상적으로 동작합니다. 자 이제 if와 else의 소괄호를 없애고..

[Windows DLL] 참고3. Release와 Debug의 차이

개발을 하는 경우에는 보통 Debug모드로 설정하고 진행합니다. Debug 모드로 Build 하면 빌드된 실행파일에 프로그램을 디버깅하기 위한 정보들이 포함됩니다. 그래서 프로그램을 디버깅할때 좋지만, 디버깅하기 위한 정보들도 포함되어있기 때문에 프로그램의 크기가 증가합니다. 따라서 프로그램 개발을 종료하고 배포할때에는 디버깅 정보들이 포함되지 않는 Release모드로 Build하여 배포하게 됩니다. 배포시 꼭 Release로 빌드한 DLL 또는 응용프로그램을 사용하시길 바랍니다.

Windows/DLL,MFC 2022.10.26
반응형