본문 바로가기

Programming/C

C Study 01 - 기초 2

C어에서 사용되는 용어



* : 에스터리스크

& : 앰퍼샌더


초기화, 선언, 정의 는 각각의 의미가 있으니 헷갈리지 말 것.

{} 와 같은 것을 scope 라 칭한다.


main 함수 () 안에 있는 것을 argument라고 하며, printf함수 에서 ()안에 있는 것을 parameter라 하는데 통상 두 가지 모두를 parameter 전달인자 값이라 한다.


main 함수 앞에 있는 것을 '반환 타입'이라 하며 그 타입에 따라 return 해주는 변수나 값 타입이 변화한다.

현재는 int 형 타입이기 때문에 1을 반환 하였다.


데이터 타입의 크기


일반적으로 데이터 타입의 크기를 말할 때 windows 32bit 환경에서의 크기를 말한다.

int : 4byte

long : 4byte

double : 8byte

long double : 16byte

point형 : 4byte

등.. 하지만 다른 환경에서는 또 다른 차이를 보인다. 

(64bit환경에서는 메모리의 크기를 더 쓸 수 있기 때문에 point형 데이터 크기가 다르다.)

Windows 에서는 LLP64 모델, char = 1 , short = 2 , int = 4 , long = 4 , 포인터 = 8 바이트 이다.

UNIX 에서는 LP64 모델, char = 1 , short = 2 , int = 4 , long = 8 , 포인터 = 8 바이트 이다.


windows 에서는 LLP64 모델을 사용해서 32비트와 똑같고 포인터만 8바이트를 쓴다.

그에 비해 LP64 모델을 쓰는 UNIX에서는 long도 8바이트를 사용한다.


데이터 타입 정리.

 무치형 

   void -> 특정한 형태가 없음

 실수형 

   int, short, long, float, double, unsigned int ....등등

 문자형

   char

 포인터 형

   int*, char* 등등


컴파일


다음은 Debug 모드로 컴파일 했을 경우의 화면이다.

Debug 모드 외에 Release 모드도 있는데 그차이에 대해 알아보자.


설정 항목

Debug 

Release

출력 디렉토리

Debug 

Release

프리프로세서의 정의

_Debug

NDebug

디버그 정보

생성

생성하지 않음

최적화

안함

실행속도 우선



Release 모드는 프로그램 실행에 필요한 정보만을 포함 하므로 용량이 작으며 실행속도가 우선이며 단순한 execution binary.

때문에 MSVCRTD.DLL파일 같은 dll파일을 요구하지 않는다. 때문에 Release 모드를 통해서 프로그램을 배포한다.

Debug 모드는 프로그램 실행에 관련하여 디버깅이 가능한 정보들을 포함하므로 Release모드보다 3~4배정도 크다. 디버깅에 필요한 dll파일이 존재 하지 않으면 프로그램을 실행할 수 없다. 


메니페스트란 ?

manifest는 응용 프로그램이나 어셈블리 안에 포함되거나 외부 XML 파일로 제공되는 XML 문서입니다. isolated application의 매니페스트는 런타임에 응용 프로그램을 바인딩해야 하는 공유 side-by-side 어셈블리의 이름과 버전을 관리하는 데 사용됩니다. side-by-side assembly의 매니페스트는 이름, 버전, 리소스 및 다른 어셈블리에 대한 종속성을 지정합니다.

격리된 응용 프로그램 또는 side-by-side 어셈블리에 대한 매니페스트를 만드는 데는 두 가지 방법이 있습니다. 첫 번째 방법으로 어셈블리 작성자는 규칙 및 명명 요구 사항에 따라 매니페스트 파일을 수동으로 만들 수 있습니다. 그러나 프로그램이 CRT, MFC, ATL 등의 Visual C++ 어셈블리에만 의존하는 경우 링커에서 매니페스트를 자동으로 생성할 수 있습니다.

 -출처 : msdn 홈페이지.



정리하자면.... 기계어코드를 관리하는 데 필요한 라이브러리와 비슷하다고 볼 수 있음.


'Programming > C' 카테고리의 다른 글

gotoxy 함수 구현 및 방향키 값  (0) 2012.07.25
C Study 02 - 연산자  (0) 2012.05.18
C Study 01 - 기초 1  (0) 2012.05.02
Compile 과정  (0) 2012.05.01
Memory 구조  (1) 2012.05.01