윤성우_열혈 C 프로그래밍_2장_프로그램의 기본구성

Visual Studio 2010 기준이다.

File -> New -> Project
Other Languages -> Visual C++ -> Win32 Console Application 선택
프로젝트명과 프로젝트 경로는 원하는대로 적절히 지정한다.
Create diriectory for solution 체크하면 프로젝트 폴더 상위에 솔루션 폴더가 만들어진다.

Next

C소스를 사용할 경우 Precompiled header를 선택하면 오류가 발생한다. 선택하지 않도록 한다. 이 옵션을 선택한 경우 발생하는 오류를 해결하는 방법은 아래에서 다시 다루겠다.

이제 새로운 프로젝트가 생성되었다.
C파일을 추가한다.
솔루션 탐색기 -> Source Files -> Add -> New Item
Visual C++ -> C++ File 선택
파일명과 파일경로를 원하는대로 적절히 입력한다.
소스코드를 작성한다.

#include <stdio.h>

int main(void)
{
    printf("Hello world! \n");
    return 0;
}

F5를 눌러 실행한다. 결과창이 금방 사라지기 때문에 제대로 확인할려면 F6으로 빌드 후 명령창을 띄워서 Debug폴더로 이동후 HelloWorld.exe를 실행해도 된다.

오류 해결

error C1853: ’Debug\Sample.pch’ precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)

프로젝트 생성시에 Precompiled header 옵션을 선택한 경우 발생한다. 이미 프로젝트를 생성한 경우 프로젝트 속성을 변경함으로서 해결할 수 있다. 솔루션 탐색기 -> 프로젝트 선택 -> Properties -> Configuration Properties –> C/C++ –> Precompiled Headers -> Precompiled Header항목을 Not Using(사용안함)으로 변경한다. 변경 후 Debug폴더에 이미 생성된 파일들을 모두 삭제후 재빌드한다.

error MSB4018: The “CL” task failed unexpectedly

윈도우7에서 사용자 환경변수 TEMP, TMP를 임의로 변경한 경우에 발생한다. 주로 램드라이브, 램디스크를 사용하면서 윈도우 임시폴더를 램드라이브로 지정하는 경우가 많다. 해결방법은 TEMP, TMP 값을 원래대로 복원하는 것이다. 그러면서 윈도우 임시폴더로 램드라이브를 계속 사용하고 싶다면 mklink 명령을 이용해서 해당경로의 링크를 램드라이브로 지정해주면 된다.

C언어의 함수

C언어는 함수로 시작해서 함수로 끝난다. C언어로 프로그램을 작성한다는 것은 “함수를 만들고, 만든 함수들의 실행순서를 결정하는 것”이다. 함수는 입력과 그에 따른 출력이 존재하는 것이다. C언어로 구현된 모든 프로그램에는 main이라는 이름의 함수가 정의되어야 하고 이 함수부터 실행된다.

#include
printf()라는 표준함수를 사용하기 위한 헤더파일 선언

int main(void)
입력 형태가 void이고 출력 형태가 int인 main이라는 이름의 함수

printf("Hello world! \n");
return 0;
함수의 몸체(Body)
return은 함수의 종료와 값의 전달(반환)이라는 두가지 의미를 지닌다.

주석
주석은 선택이 아닌 필수다!
// : 행단위 주석
/- *- : 블럭단위 주석

printf() 함수
데이터를 다양한 형태로 출력한다.

printf("My age : %d \n", 20);
printf("%d is my point \n", 100);
printf("Good \nmorning \neverybody\n");
“\n”은 escape sequence의 하나로서 줄을 바꾸라는 의미.
“%d”는 서식문자(Conversion specifier)의 하나로서 10진수 정수형태로 출력하라는 의미.

Leave a Reply