개발자 데뷔!

[C/C++ 0.1] C 컴파일방법 & 표준입출력 본문

프로그래밍 언어/C

[C/C++ 0.1] C 컴파일방법 & 표준입출력

물꼮이 2021. 7. 15. 08:35

linux - eclipse 개발도구 사용 ****

 

* 2차시 기준 c컴파일 과정)  * 컴파일 방법은 개발방법에 따라 조금씩 다름

소스파일 → 컴파일 (전처리, 문법체크, 최적화) →오브젝트파일 →링크(라이브러리함수 결합) → 실행파일

컴파일)

1. 전처리문 우선 실행 (#include #define #ifdef)   ??? 얜 모임 ? → 소스코드 재정리

2. 문법체크 →소스코드 중 일부 속도향상 최적화 코드로 변경

링크)

1. 라이브러리 함수 호출

2. 오브젝트 코드 함께 결합 →실행파일 완성 

 

 

c컴파일러 옵션 소스파일명 )

 

c컴파일러 : Unix → cc

               Linux → gcc

주요옵션 의미
-o filename 컴파일 결과를 지정한 filename에 저장
-c  오브젝트 파일까지만 생성 (.o 또는 .obj 확장자)
여러개의 소스파일로 나누어 개발할 때 유용하게 사용
-l libname 표준 c 라이브러리가 아닌 그 이외의 라이브러리 결합시 libname결합. 
여기서 libname은 라이브러리 파일명 lib_libname.a로 확장
-g 실행파일에 디버깅에 필요한 정보가 포함
디버깅이 필요할 때에는 컴파일 시 이 옵션을 함께 컴파일해야 함
(Visual Studio 에서는 디버깅모드로 빌드하는 방법이 이 옵션에 해당)
   
   
   

 

gcc [옵션] 실행파일명 소스파일명.c [옵션] 

사용 예 의미
gcc -o sample sample.c 소스파일 sample.c를 컴파일 하여 실행파일 sample로 저장
gcc -c test.c 소스파일 test.c를 컴파일 해서 오브젝트 파일 test.o(또는 test.obj)를 생성
gcc -o hello hello.c -lm 소스파일 hello.c를 컴파일하고 라이브러리 libm.a를 링크하여 실행파일 hello를 생성

?????? 실행해보기 : 2차시 17분 50초

 

 

* 전처리 문 :  #으로 시작되는 명령문, 컴파일 시 제일 먼저 처리됨

 

* c프로그램 실행시 main함수최초로 호출됨 

int main(void){

}

함수 정상작동 : return 0    * 오류나면 0이 아닌 값 return !!

 

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

 

표준 입출력 

 

* C프로그램의 입출력은 모두 스트림(Stream)을 통해 이루어짐 

스트림 : 일련의 바이트로 구성된 데이터의 흐름. 장치의 종류와 관계없이 동일한 방법(동일한 입출력 방식)으로 입출력 수행

 

 

 

스트림 의미 표준입출력 장치
stdin (에스티디인) 표준 입력 키보드
stdout (에스티디아웃) 표준 출력 모니터
stderr (에스티디에러) 표준 오류 모니터

 

* 프로그램 작성시 표준입출력 함수를 이용할 때에는 헤더 파일을 포함시켜야 한다. 

 

표준입출력 함수 ) 

printf /  scanf

 

printf 형식지정자) 

 

형식지정자 
제어문자

 

 

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

 

printf )

 

"%[ + or - ]자릿수[.소수점이하자릿수]지정자"

[+] : 우측정렬기준

[-]  : 좌측정렬기준 

자릿수 : 해당 자릿수 만큼만 표시 

[.소수점이하자릿수] : 소숫점 이하 해당 수만큼만 표시

지정자 : type결정

 

ex) 

printf("%-10d\t%-10d\n\n",123,12345)

printf("%10.2f\t%.2f\n",98.765,987654.123)

printf("%-2f\t%-10.2f\n\n",98.765,987654.123)

 

출력결과 ) 

123 12345
98.77 987654.12
98.77 987654.12

 

??????? 설명더하기 

 

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

 

scanf )

변수 : 입력받기 위한 임의 공간

* 공백문자 or 'Enter' 키를 구분자로 입력받음  ******

 

scanf("형식지정자", &변수1,&변수2...);

* &은 주소연산자

  ** scanf 에서 꼭 붙여줘야 함 !!! 

  안붙이면 예기치 않은 종료 ! 

  * scanf 사용할 때는 제어문자(\n) 사용 금지 !!!! 

 

scanf("%*c")

 * 데이터 입력시 뒤에오는 엔터문자를 처리하기 위해 추가된 명령문 

* 이 줄을 삭제하면 데이터 입력시 enter문자 가 데이터로 처리됨 ** ????????????이게 무슨 말 ? 

 

scanf 형식지정자) 

 

 

'프로그래밍 언어 > C' 카테고리의 다른 글

[C/C++ 1.8] 연산자 sizeof  (0) 2022.03.10
[C/C++ 1.5] Register 변수  (0) 2022.03.10
[C/C++ 1.4] static 변수  (0) 2022.03.10
[C/C++ 1.3] 변수선언&초기화  (0) 2022.03.10
[C/C++ 0.0] C의 시작  (0) 2021.07.11