'프로그래밍 관련자료'에 해당되는 글 5건

  1. 2017.06.13 :: cure.exe 소스공개( gcc버전으로 리뉴얼 ) 2
  2. 2014.05.13 :: DirectFB 시작
  3. 2013.07.24 :: JVM INTERNAL 2
  4. 2009.09.30 :: C++, C 함수 공용하기
  5. 2009.02.05 :: #define 이용 해서 Test(디버그모드일때)할때만 내용 출력하기
프로그래밍 관련자료 2017. 6. 13. 00:33

인터넷에 떠도는 Cure GCC버전( Windows 용 ) 소스입니다.


인터넷에 하도 떠돌며 사라지질 않길래,  이게 뭐라고........

그냥 소스 당시 로직 거의 그대로 새로 짜서 공개합니다.


원래 코드는 turbo C 로 작성하였었습니다만..... 시대도 변했고 gcc를 개인적으로 좋아하는지라 gcc버전으로 작성했습니다.


gcc 로 윈도우즈에서 빌드하면 빌드됩니다.

( gcc cure.c -o cure.exe )


궁금하신분은 소스 열어보세요~!


적당한 재귀호출 이랑 API사용법 외에는 별 내용이 없습니다.

재미삼아 보세요.


atrrib -h -s *.* 과 같은 스크립팅으로도 가능하지만, 당시 전산실에서는 path설정이 풀려서 해당 커맨드가 잘 먹질 않아서 굳이 30분 코딩해서 바이너리로 만들었던 기억이 납니다.


코드에 대한 퀄리티 지적은 사절합니다.

코딩을 거의 하지 않거든요.


cure.c


posted by Sense.J
:
프로그래밍 관련자료 2014. 5. 13. 22:16

우분투에서 directFB 예제 빌드 및 실행방법

root 권한으로 apt-get install directfb* 로 DirectFB관련 라이브러리 및 소스 설치

//----------------------------------------------------

//소스 파일명 : a.c

//----------------------------------------------------

#include <stdio.h>
#include <unistd.h>

#include <directfb.h>

// entry point
static IDirectFB *g_pDirectFb = NULL;

// primary surface
static IDirectFBSurface *g_pPrimarySurface = NULL;

static int nScreenWidth = 0;
static int nScreenHeight = 0;

/*
 * An error checking macro for a call to DirectFB.
 * It is suitable for very simple apllications or tutorials.
 * In more sophisticated applications this general error checking should not be used.
 */

#define DFBCHECK(x...)                                         \
 
{                                                            \
   
DFBResult err = x;                                         \
                                                               
\
   
if (err != DFB_OK)                                         \
     
{                                                        \
        fprintf
( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \
       
DirectFBErrorFatal( #x, err );                         \
     
}                                                        \
 
}

int main(int argc, char **argv)
{
       
// create surface description
       
DFBSurfaceDescription dsc;

        DFBCHECK
( DirectFBInit(&argc, &argv) );

       
// create super interface.
        DFBCHECK
( DirectFBCreate(&g_pDirectFb) );

        DFBCHECK
( g_pDirectFb->SetCooperativeLevel(g_pDirectFb, DFSCL_FULLSCREEN) );
       
       
// set flags
        dsc
.flags = DSDESC_CAPS;
        dsc
.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;
       
       
// create surface
        DFBCHECK
( g_pDirectFb->CreateSurface(g_pDirectFb, &dsc, &g_pPrimarySurface) );

       
// get surface size
        DFBCHECK
( g_pPrimarySurface->GetSize(g_pPrimarySurface, &nScreenWidth, &nScreenHeight) );
        printf
("Width: %d, Height: %d\n", nScreenWidth, nScreenHeight);

       
// clear surface
        DFBCHECK
( g_pPrimarySurface->FillRectangle (g_pPrimarySurface, 0, 0, nScreenWidth, nScreenHeight) );
       
       
// set surface color
        DFBCHECK
( g_pPrimarySurface->SetColor(g_pPrimarySurface, 0xff, 0x00, 0x00, 0xff) );
       
        printf
("Draw Rectangle\n");

       
// draw rectangle
        DFBCHECK
( g_pPrimarySurface->FillRectangle (g_pPrimarySurface, 100, 100, 440, 280) );

        printf
("Update Surface\n");

       
// update surface
        DFBCHECK
( g_pPrimarySurface->Flip(g_pPrimarySurface, NULL, 0) );
       
        sleep
(5);

       
// clean up
        g_pPrimarySurface
->Release( g_pPrimarySurface );
        g_pDirectFb
->Release( g_pDirectFb );

       
return 0;
}


-------------------------------
~/.directfbrc 내용 생성

-------------------------------

mode=640x480 system=x11


[ 빌드방법 ]

gcc a.c -I/usr/include/directfb -ldirectfb


이후 실행 확인.


끝.





posted by Sense.J
:
프로그래밍 관련자료 2013. 7. 24. 01:14


JVM Internal.pptx


개인적으로 진행하는 것들을 위한 공부자료.

JVM의 동작 구조에 대한 자료들.

posted by Sense.J
:
프로그래밍 관련자료 2009. 9. 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++을 불러오는 경이로운(?)모습을 볼 수 있다.

posted by Sense.J
:
프로그래밍 관련자료 2009. 2. 5. 03:13

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

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

  #define _Test

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

 또는
 #ifdef _DEBUG_MODE            
 #define _Test
 #endif

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

posted by Sense.J
: