2020년 7월 31일 금요일

edX C 프로그래밍 수강, 맥에서 gcc 사용을 위해 명령행 개발자 도구 설치

edX의 C  Programming with Linux Certificate 프로그램을 수강하고 있다. 7개 코스가 하나의 프로그램을 이루는 것으로, 유료로 수강해 수료하면 Professional Certificate를 준다. 동기 부여를 위해 유료로 수강 중이고, 현재 3개 코스를 마치고 네 번째를 듣고 있다.

전에도 edX에서 수업을 몇 가지 들었는데, 지나고 나면 기억이 희미해지는 것이 아쉬웠다. 그래서 이번에는 수업 내용을 위키독스에 영어로 배우는 C 프로그래밍이라는 이름으로 정리하고 있다.

이 수업은 PC에 컴파일러를 설치하지 않고 웹 브라우저에서 바로 해볼 수 있다.

포인터 연산 수업을 듣고 객관식 문제를 풀다가 같은 문제를 자꾸 틀려서 코드를 직접 작성해서 테스트해보니 예상과 다르게 나왔다. 혹시나 컴파일러가 달라지면 다르게 작동할까 싶어, 맥북에서 한 번 더 테스트해보았다.

코드:

% cat pointer.c
#include 

int main(void) {
    int numbers[] = {4, -1, 8, 3, 0, -11};
    printf("%d", numbers[10]);
    return 0;
}


gcc를 사용하기 위해 명령행 개발자 도구를 설치:

% xcode-select --install

컴파일:

% gcc pointer.c
pointer.c:5:18: warning: array index 10 is past the end of the array (which
      contains 6 elements) [-Warray-bounds]
    printf("%d", numbers[10]);
                 ^       ~~
pointer.c:4:5: note: array 'numbers' declared here
    int numbers[] = {4, -1, 8, 3, 0, -11};
    ^
1 warning generated.


실행:

% ./a.out
1860979913

실행 결과를 확인하니 아차 싶었다. C 언어를 옛날에도 배웠고 지금도 다시 배우고 있음에도, 특성을 정확히 이해하지 못한 부분을 이 문제가 잘 지적해주었다.

댓글 없음:

댓글 쓰기