Program Language

C++ 기초 정리(1)

Ohtuna 2019. 10. 23. 12:27

1. 명시적 스타일

 

int main() 함수를 보면 main함수 옆에 arugument 혹은 parameter가 비어있다.

컴파일러는 int main(void) 로 인식한다.

 

여기서 명시적 스타일이라는 것은 int main()으로 사용하여도 컴파일러는 parameter가 void형이라는 것을 알 수 있다

하지만 사용자가 작성 하지 않아도 되는 것을 작성하여 표현하는 것을 명시적 스타일이라고 한다.

 

* main 함수의 반환 값을 void main()으로 작성하는 것은 피하자

 

2. 전처리기

 

전처리의 말뜻부터 이해하자

전처리라는 말은 무언가 작업을 하기 전 미리 처리를 해놓는다는 것을 의미한다.

C++에서 전처리기란 컴파일 하기전 소스파일에 대해 미리 처리를 수행하는 것을 말한다.

 

#include<iostream>

 

위와 같이 #으로 시작하는것들을 전처리기라 한다.

#은 전처리 지시자(directive)라고 하고 #include<iostream> 이라는것은 iostream 파일의 내용을 프로그램에

추가하라고 지시하는 것이다.

 

3. namespace

 

C++에서는 namespace 라는 것을 제공한다.

 

#include<iostream>

 

using namespace std;

 

이렇게 using namespace std라고 지정하는데 이 의미가 무엇이냐면 iostream 파일안에 함수들을 사용하기

위해서는 std라는 이름 공간이 필요하다.

그 이름 공간을 일일이 작성하지 않고 사용하도록 만들어준다는 의미이다

 

예를들어 using namespace std가 없는 경우에는

 

기본 출력 함수인 cout을 사용할때 마다 std::cout << "ohtuna"; 라고 적어주어야 한다.

하지만 using namespace std를 사용하면 cout << "ohtuna"; 를 사용해도 정상동작 한다.

 

그럼 왜 이런 기능을 만들었는지 알아보자

A 업체에서 만든 함수가 있고, B업체에서 만든 함수가 있다

그런데 두 업체에서 만든 함수이름이 동일하다면 컴파일러는 어떤 업체에 함수를 써야할지 모른다

그리하여 만들어진 것이 namespace 이다 

A업체의 namespace를 A라고 만들고 B업체의 namespace를 B라고 하고

동일한 두 함수명은 Ohtuna()라고 하자 그리고 두 함수는 다른 기능을 한다

 

A업체 Ohtuna함수 

int Ohtuna()

{

   return 1;

}

 

B업체 Ohtuna함수

int Ohtuna

{

   return 100;

}

 

cout << A::Ohtuna() <<"\n";

cout << B::Ohtuna() << "\n";

 

출력 결과

1

100

 

이렇게 구별하여 사용 할 수 있기 때문에 namespace 라는 기능이 생겼다.