본문 바로가기
카테고리 없음

임베디드 프로그래밍을 고려한 C강의 -1

by 팁텍북 2018. 7. 2.

임베디드 프로그래밍을 고려한 C강의 -1


임베디드 프로그래밍을 고려한 C강의입니다.

먼저 Visual C++ 2010 평가판설치를 선행합니다.

구글에서 검색하면 내려받을 수 있는 경로를 쉽게 찾을 수 있을겁니다.


이후 Visual C++ 2010을 실행하여 아래를 따라오시면 됩니다.

아래부터는 존칭을 생략하도록 하겠습니다.



먼저, 새 프로젝트를 작성한다.

먼저 빈 프로젝트를 클릭하고 프로젝트의 이름을 하단에 입력한다.

그리고 우측 하단의 확인 버튼을 클릭한다.


아래와 같이 프로젝트가 생성되었다. 소스파일을 클릭하고 우클릭을 하여 속성에 들어간다.


이제 C파일을 작성한다. C++파일(*.cpp)를 클릭 후 하단의 이름에는 .c로 입력한다.



소스를 입력한다.


#include<stdio.h>


int main(void)

{

printf("Be Happy! \n");

return 0;

}



소스를 입력하고 솔루션 빌드를 클릭한다.


-아래는 CMD창에 결과를 출력하는 방법이다


프로젝트 메뉴에서 맨 하단 메뉴인 (파일명)속성을 클릭하면 하단과 같이 창이 뜬다.

여기에서 구성속성->링커->시스템화면에서 “하위 시스템”의 값을 콘솔로 설정하고 적용 및 확인을 눌러준다.


이후에 Control+F5키를 누르면 cmd.exe창에 아래 화면과 같이 결과가 출력된다.


실행이 안될 때 아래의 메뉴에서 매니페스트 포함을 예로 바꾼다.



한 프로젝트 내 Main이 두개일 수 없다. 빌드에 필요없는 c파일은 파일의 속성에서 아래와 같이 설정해준다.


주석은 한 라인 주석과 여러라인 주석처리 방법이 있다

//한 라인 주석


/*

여러라인 주석

*/


- 조건부 컴파일

코드를 수정할 때는 조건부 컴파일을 걸어 놓는다. 수정을 요청해서 해주지만, 원상복구를 요구하는 경우가 빈번히 있다. 이 때 유용하게 사용할 수 있다.


조건이 참일 때만 컴파일 된다.

(논리로 따졌을 때 0 이외의 모든 정수는 참이다.)


#if 0 ~ #endif 사이에 있는 값은 색이 흐려지고 컴파일 되지 않는다.


이것을 고쳐서 #if 1 ~ #endif 로 하면 이것은 실행된다.


아래의 화면에서는 #else문이 컴파일 된다.


#include<stdio.h>


#if 0

int main(void) //main함수의 시작점입니다.

{

printf("Example \n");

return 0;

}

#else

int main(void)

{

printf("Be Happy! \n");

return 0;

}

#endif


함수

  • 라이브러리(Library) : 이미 만든 것을 참조하는 것

  • 사용자정의(직접구현)

전 처리 구문


함수의 호출은 main내에서 한다.

사용자정의 함수의 경우 함수의 정의는 main함수의 아래에서 한다.

라이브러리 함수의 경우에는 main함수 아래에서 함수 정의를 할 필요가 없다. 다른 파일에 이미 컴파일 되어있다. 목적파일로 되어있다.


링커는 library함수를 연결해준다. 눈에는 보이지 않는다.


#include <stdio.h>

Stdio.h

표준 입출력 함수들의 원형이 정의되어있음. printf, getchar, gets, …

함수의 원형들이 main함수의 위에 선언되어있다.


#define

#if


#include <stdio.h> 문을 주석처리해보자. printf문 아래에 빨간 줄이 생겼다.


Main은 함수의 뼈대이면서 동작원리가 모두 들어가 있다.


‘홑 따옴표에는 문자 하나’

“쌍 따옴표에는 문자열”




Debug폴더 내 exe파일이 기계어이다.

함수 Depth가 4단계 이상되면 프로세스 능력이 떨어진다.




정의는 다른 파일에 있어도 된다. 이것을 모듈화라고 한다.


표준헤더파일은 <stdio.h>의 형태로 입력한다.

하지만 사용자 정의 헤더파일은 “.h”로 작성한다. 해당 디렉토리를 찾는다.

#include "display.h"


-중복컴파일 방지 코드

리눅스 등에서 중복컴파일이 문제가 된다. 이 때는 아래와 같이 작성하여 해결한다.

#ifndef __DIP //중복컴파일 방지코드

#define __DIP


void display(); //함수 원형


#endif


Main을 실행하는 주체는 OS이다.

Return 0;은 OS로 0이 반환되고 프로그램이 정상종료가 되었는지 로그 관리할 때 사용함.



printf("my age : %d \n \r"); //%d서식문자 \n개행문자:새 줄을 만든다. \r캐리지리턴:커서를 맨 앞으로 당긴다.


Carriage return이 안먹으면 아래와 같이 출력된다. 하이퍼

My age:

My:------


- 서식문자

ex)%c-한 문자(character), %d - 정수(decimal), %s - 문자열(string) %f - 실수(float)

%p-주소(pointer) %x-16진수(hexa) %u-부호없는 정수(unsigned int)



Binary

Hex

Decimal

10001010

0x8A

138


Most significant bit 정보의 최상위 비트

Least significant bit 정보의 최하위 비트


아래와 같이 입력 후 실행하면 결과가 나타난다.

#include <stdio.h>

int main(void)

{

printf("my age : %d \n", 32);

printf("my name : %s \n", "DVKANG");

printf("my phone : %s \n", "82-10-5332-6579");

return 0;

}

\0은 null문자임. %c로 출력하면 안보이는 값임.


0

‘0’

‘\0’ null character

Decimal 0

Decimal 48

Decimal 0

Char 없는 값

Char 0

Char 없는 값


문자열 처리할 때는 맨 뒤에 ‘/0’(널 문자)가 있다.

Char str[6] = “study”;

Char str[6] = {‘s’,’t’,’u’,’d’,’y’,’\0’};

서식문자는 시작주소부터 Null문자를 만날 때 까지 띄워준다.


1번강의 끝.


댓글