3. C프로그래밍 환경 - 컴파일러

김동웅·2021년 9월 9일
0

UNIX

목록 보기
3/14

- C파일 만들기

  • vim이라는 텍스트 편집기 사용해서 코드 작성
    $ vim 파일이름.c

  • vim 은 입력모드와 명령모드 두 가지의 모드가 있다.
    1. 입력모드 : 말그대로 텍스트를 입력하는 모드
    2. 명령모드 : 저장, 복사, 치환 등과 같은 여러가지 명령을 수행할 수 있는 모드

  • 텍스트창이 열리고 i를 입력하면 입력모드가 된다.

  • 코드작성을 마치면 ESC를 눌러 명령모드로 전환한다.

  • :wq(저장 후 종료) 입력

VIM 자주 사용하는 명령어 및 Tip

https://zzsza.github.io/development/2018/07/20/vim-tips/

1. 컴파일 및 실행

- 컴파일

$ gcc 파일이름.c
$ ./a.out // 실행 파일

• -c 옵션

$ gcc -c longest.c → 목적 파일(object file) longest.o 생성

• -o 옵션 (a.out 대신 지정한 이름의 실행 파일을 만듦)

$ gcc -o longest longest.o (.o가 있는 상태에서)
$ gcc -o longest longest.c
$ ./longest // 실행 파일

2. 다중 모듈 프로그램

  • 단일 모듈 프로그램의 단점 ?
  1. 코드의 재사용(Reuse)이 어렵다.
  2. 여러사람이 참여하는 프로그래밍이 어렵다.
  • 다중 모듈 프로그램
    : 여러개의 .c파일들로 이루어진 프로그램

ex) main 함수와 copy함수를 분리하여 별도 파일로 작성
1. main.c
2. copy.c
3. copy.h // 함수의 프로토타입을 포함하는 헤더파일

  • main.c

#include <stdio.h>
#include <string.h>
#define MAXLINE 100

char line[MAXLINE];
char longest[MAXLINE];

int main()
{
	int len;
	int max;
	max = 0;
	while(fgets(line,sizeof(line),stdin) != NULL)
	{
		len = strlen(line);
		if(len > max) 
		{
			max = len;
			copy(line,longest);
		}
	}

	if( max> 0 )
		printf("%s\n",longest);

	return 0;
}
  • copy.c

#include <stdio.h>
#include "copy.h"

void copy(char from[], char to[])
{
	int i=0;
	while ((to[i]=from[i])!='\0')
		++i;
}
  • copy.h

#define MAXLINE 100
void copy(char from[], char to[]);

→ 컴파일

$ gcc -c main.c (object 파일 생성)
$ gcc -c copy.c (object 파일 생성)
$ gcc -o main main.o copy.o (.o파일들을 링크하여 실행파일 생성)
혹은
$ gcc -o main main.c copy.c

$ ./main



0개의 댓글

관련 채용 정보