상세 컨텐츠

본문 제목

C언어 선행처리기

Tips/대학

by 한국인맛집 2019. 3. 19. 22:52

본문

반응형

선행처리기 




선행처리기는 컴파일되기전에 미리 처리하는 역할을 뜻한다.


 프로그램 실행순서


선행처리기   ->   컴파일   -> 링킹 (obj 파일생성 ) -> 실행파일(exe)파일 생성 -> 실행



선행처리기 종류


 

 키워드

기능 

#include 

파일을 추가  

 #define

매크로 정의 

 #if  #elif  #else #endif

조건부 선행처리기 



사용의 예)


#include 의 사용의예

#include<stdio.h> // 시스템 설치 경로에 /usr/include/stdio.h 헤더파일을 가져옴 #inlcude"MyHeaderFile.h" // 현재 프로젝트가 있는 경로에서 파일을가져옴 ( 사용자정의 헤더문) void main(){ char wordA = 'a'; char wordB = 'b'; printf("WordA = %c , wordB = %c \n" , wordA, wordB); }


표준헤더파일 종류 (더많이있으나 자주사용하는 것들 ) 

헤더파일 

설명 

stdio.h 

표준 입출력 함수

 printf, scanf , fopen, fread, fwrite ··· 등..

stdlib.h

메모리관리, 프로그램유틸, 문자열변환,난수생성
malloc , free, rand,srand, system, exit, ··· 등등

 

math.h

수학삼각함수등..

sin, cos , tan 등.. 

time.h

시스템 시간함수 

thread.h

스레드 함수 

string.h 

문자열 함수 , 문자열비교문

strcpy, strcmp 등.. 







#define 매크로문 사용예

#define MY_BEST_NUMBER 5555 #define MY_FUNC(x) (10) * (x) #include<stdio.h> void main(){ int number = 10; // 10 number = MY_BEST_NUMBER; // MY_BEST_NUMBER 가 5555 로 치환됨 printf("NUMBER = %d\n",number) // NUMBER = 5555 int funcNumber = MY_FUNC(number); // int funcNumber = (10 ) * (5555) 로 치환됨. printf("func Number = %d",funcNumber); // func Number = 55550 }

※ 매크로 문은 대입되는것이아니라 치환되는것이다.


#if  #elif  #else  #endif

// 예를 들었습니다. 이코드문은 실행되지 않습니다.


#include<stdio.h>

void main(){

   char word = 'a';

#if RUN_PLATFORM == PLATFORM_WINDOWS_10   // RUN_PLATFOM 이 windows10 이라면.
   word = 'w';

#elif RUN_PLATFORM == PLATFORM_MAC_OS    // RUN_PLATFORM 이 맥OS 라면.
    
   word = 'm';
#else                // 위에 조건이 전부 False 라면.

   word = 'a';
#endif               // #if 로 시작하면 #endif 로 닫아줘야한다.


}



주의점


  • 선행처리기는 #으로 시작되어야한다.
  • 명령문 끝에 ;(세미콜론)을 붙이지않는다.

일반적으로 매크로의 경우 대문자로 표기하는게 프로그래머들간의 암묵적 원칙적이다 


소문자로하면 변수로 착각할수있기때문에 대문자로 표기한다. 그리고 매크로경우 상수, 문자열, 문자 , 수식으로 사용된다.


반응형

'Tips > 대학' 카테고리의 다른 글

C언어 반복문  (31) 2019.03.31
C언어 선택제어문.  (31) 2019.03.31
C언어 입출력함수과 연산자  (0) 2019.03.22
처리장치와 데이터  (0) 2019.03.17
컴퓨터의 이해  (31) 2019.03.11
유비쿼터스 컴퓨팅 개념, 주요이슈  (0) 2019.03.06

관련글 더보기