일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 도커 #Docker #배포 #Spring #MySQL #백엔드배포
- /
- chatgpt #gpt #챗지피티 #ai
- 도커 #docker #docker-compose.yml #도커컴포즈 #배포 #spring #mysql #docker-compose
- Today
- Total
개발자 데뷔!
[C/C++ 0.1] C 컴파일방법 & 표준입출력 본문
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 |