티스토리 툴바


C++, C 함수 공용하기

프로그래밍 관련자료 2009/09/30 05:32

문득 다가올 텀프로젝트에 대비하여
C++의 펑션을 C에서 가져다 쓸 방법에 대해 고민하게 되었다.
그 이유는 벡터와 스택과 같은 매우 유용한 클래스 라이브러리를 사용하기 위함이다.

여러가지 방법이 있을수있지만
웹서핑과 실험이후 얻은 결론은 다음과 같다.
a.cpp , main.c
두개의 파일이 있다고 가정하자
a.cpp에는 클래스를 구현한후, wrapper 더미 펑션을 생성한다.
이유는 씨에서 호출하기 위함이다.
클래스를 래핑하여 건드릴 수 있는 더미 함수를 생성할떄 extern "C"로 생성하여
맹글링 문제가 생기지 않게 해주어야 한다.
함수의 다형성 문제로 컴파일러가 펑션  이름을 알아서 바꾸게 되는데 이를 저지하게 해주는
전처리문정도로 생각하면될듯하다.
이렇게하여
g++ -c a.cpp -o a.o
gcc -c main.c -o main.o

이후 오브젝트 코드가 생성되면 g++을 통해 링크해주면 된다
g++ main.o a.o -o a.out

이런식으로 하면 a.out이 생성되고 c코드에서 C++을 불러오는 경이로운(?)모습을 볼 수 있다.

크리에이티브 커먼즈 라이선스
Creative Commons License

#define 이용 해서 Test(디버그모드일때)할때만 내용 출력하기

프로그래밍 관련자료 2009/02/05 03:13

  #ifdef _Test
           출력할 내용(테스트 출력용)
  #endif

- 디버그 모드일때만 출력할것을 위와 같이 한다음에
stdafx.h 헤더 파일이나 또는 위 *.cpp 파일에 포함되어지는 헤더파일에 아래와 같이 한다.

  #define _Test

 그리고 출력하지 않을 때는   #define _Test를 주석처리한다.

 또는
 #ifdef _DEBUG_MODE            
 #define _Test
 #endif

  이렇게 하면 디버그 모드일때만 _Test가 선언된다.

크리에이티브 커먼즈 라이선스
Creative Commons License