기초적인 C++ 문법
(Fundamental C++ Grammar)
※ C++은 대소문자를 구분하므로 키워드나 기타 문법은 대소문자까지 철저히 지켜야 함
* Unknown identifier : 컴파일러가 알 수 없는 식별자를 발견했을 때, 출력하는 에러 메세지
주석
(Comment)
- 프로그래머가 프로그램 안에 기록해 두는 일종의 메모
- 프로그램의 구역을 구분하거나, 코드를 설명하는데에 활용함으로써 소스 코드 가독성을 향상시킴
- 컴파일러는 컴파일 시, 주석문은 무시하고 건너뛰므로 프로그램 실행시간에 영향을 주지 않음
1. // ~~~~
- 이후 한 문장 주석처리
- C++ 스타일 주석 처리법
- C 스타일 주석 처리법과 달리, 시작과 끝을 맞출 필요가 없어 오류에서 비교적 자유로워 권장되는 방법임
2. /* ~~~~ */
- 다문장 주석처리
- C 스타일 주석 처리법
Example
// 한 문장 주석처리
cout << "It just example";
/* 여러
문장에 대한
주석처리 */
C++ 전처리기
(C++ Preprocessor)
- 컴파일 이전에 소스 파일에 대해 미리 일련의 처리를 수행하는 프로그램
- Stroustrup의 cfront 도 전처리기의 일종
전처리기 지시자
Preprocessor directive
1. #include
- 특정 프로그램 파일(Header file 등)을 현재 작성중인 프로그램 파일에 첨부하는 지시자
Example
#include <iostrem>
// "iostream" 파일을 포함시킴으로써 cout 개체를 사용 할 수 있다.
int main(){
cout << "Example";
}
* #include <iostream> 이라는 행이 컴파일 되면 iostream 파일의 내용으로 대체됨
헤더파일
(Header File)
- 다른 파일에 포함되는 파일이라 포함 파일이라고 부르기도 함
- 특정한 기능을 제공하는 파일
- 파일 유형을 구분하기 위해 다른 확장자를 이용함
헤더파일 확장자 규칙
종류 | 규칙 | 예시 | 설명 |
(구) C++ Style | .h 확장자 | iostream.h | C++ 프로그램에 사용 가능 |
(신) C++ Style | 확장자 없음 | iostream |
C++ 프로그램에 사용 가능 namespace std 를 사용 |
(구) C Style | .h 확장자 | math.h | C 및 C++ 프로그램에 사용 가능 |
변환형 C Style |
c 접두어 및 확장자 없음 |
cmath |
C++ 프로그램에 사용가능 namespace std와 같이 C에 없는 기능의 일부를 사용할 수 있음 |
이름 공간
Namespace
- 다수의 개발자가 함께 개발할 때, 함수나 개체의 이름이 중복되는 경우가 발생할 수 있는데,
이 때 이름을 수정하지 않고 개발을 진행할 수 있게 하는 개념
Example
Microflop::wanda("go dancing?");
// "Microflop" namespace 내의 함수 "wanda()"를 호출
Piscine::wanda("a fish named Desire");
// "Piscine" namespace 내의 함수 "wanda()"를 호출
using namespace std;
// std 이름공간 내의 모든 개체를 별다른 명시적 표현 없이 사용할 수 있게 해줌
using std::cout;
// std 이름공간 내의 cout 개체를 사용할 수 있게 해줌
std::cout << "예시";
// 일회적으로, std 이름공간 내의 cout 개체를 사용함
※ "using" directive 이용하면 해당 영역 내에서 특정 이름공간내에 명시된 개체들의 이름공간을
따로 명시하지 않고 이용할 수 있다.
소스 코드의 모양
- 프로그래밍 언어별로 하나의 구문을 인식하는 방법이 상이함
- FORTRAN과 같은 언어에서는 하나의 구문이 하나의 행을 차지하므로, 캐리지 리턴 * 자체가 행을 구분하는 역할을 함
- C++과 같은 언어에서는 세미콜론(;)으로 구문을 구분하므로 꼭 하나의 행이 하나의 구문을 의미하지는 않음
* Carriage Return (CR)
- 커서를 맨 앞으로 이동시킴
* Line Feed (LF)
- 커서를 아랫줄로 이동
* Windows 에서 Enter = CR과 LF가 결합된 강제개행 기능
* CR과 LF 모두 과거 타자기를 이용하던 시절에 생긴 용어이다.
문법 규칙
1. 키워드나 변수는 중간에 빈칸, 탭, 캐리지 리턴을 허용하지 않는다.
2. 예외적으로, 문자열 변수는 중간에 캐리지 리턴을 허용한다. (C++11 버전에서 추가된 내용)
3. 구문 간 구분문자(Delimiter)로 세미콜론(;)을 이용한다.
int ma in()
// 틀린 구문
// 이름(함수명) 사이에 화이트스페이스(Tab)는 허용하지 않음
re
turn 0;
// 틀린 구문
// 키워드 안에 화이트스페이스(Carriage return)는 허용하지 않음
cout << "Behold the Beans
of Beauty!";
// 옳은 구문
// 예외적으로, 문자열 데이터 사이에는 Carriage return을 허용한다.
권장하는 C++ 코드 스타일
1. 한 행에 하나의 구문을 사용한다.
2. 함수를 여는 중괄호 "{"와 닫는 중괄호 "}"에 각각 한 행을 할애한다.
3. 함수 안에 들어갈 구문들은 중괄호에서 약간 오른쪽으로 들어간 위치에서 시작한다.
4. 함수 이름과 괄호 사이에는 어떠한 화이트스페이스 * 도 넣지 않는다.
* 토큰 (Token) : 한 행의 코드에서 더 이상 분리할 수 없는 기본 요소 (Atomic element)
* 화이트스페이스 (White space) : 빈칸, 탭, 캐리지 리턴을 포함하는 개념