뚜둔뚜둔✩

판다의 개발일지

C · C++ 15

[C(++)] Header Guard (헤더 가드) Coding

HTML 삽입 미리보기할 수 없는 소스 .h 헤더 파일은 다른 .c나 .cpp 파일에 의해 include 되는 파일로, 여러 파일에서 공통적으로 사용되는 함수 정의 및 매크로, 구조체 등이 정의된 파일이다. #include 헤더 파일에는 1) 개발자가 직접 작성한 .h 헤더 파일과 2) 컴파일러가 제공하는 헤더 파일, 이렇게 2가지 종류가 있다. 종류에 따라 #include 전처리기를 선언하는 방법이 다음과 같이 달라진다. 1) 직접 작성 헤더 파일 #include "header_file" 2) 시스템 헤더 파일 #include 그렇다면 이 #include 전처리기는 어떤 동작을 하는지 살펴보자. 특정 파일에 #include 전처리기로 헤더 파일을 include 하는 것은 해당 파일에 헤더 파일 내용을 ..

C · C++ 2022.02.05

[C] printf 함수

#include int printf(const char *format, ...); printf 함수는 C에서의 표준 출력 함수로, 표준 출력 스트림인 stdout(standard output)에 정해진 format 형식의 문자열을 출력한다. format은 const char* 타입으로, printf 사용 시 출력하고자 하는 형태의 문자열을 format specifier 및 escape sequence와 함께 구성하여 "...." 형태로 전달한다. Escape Sequence 출력하고자 하는 문자열은 " 큰 따옴표로 둘러싸인 문자열로 전달된다. 만약 "Hello World"라는 문자열을 (큰 따옴표까지 포함하여) 출력하려면 다음과 같이 하면 될까? printf(""Hello World""); 답은, '아니..

C · C++ 2021.12.21

[C] const type qualifier

const type qualifier(형식 한정자)는 개체를 수정할 수 없는 것으로 선언한다. 즉, 일반적으로 설정된 값을 변경할 수 있던 변수를 read-only 성질로 변경한다. 따라서 const 사용을 통해 컴파일러에게 특정 변수의 값은 변경되어선 안 된다는 정보를 전달할 수 있다. #1. 포인터가 아닌 변수의 상수화 const int n = 10; n = 20;// ERROR, type of n is const-qualified 포인터가 아닌 변수에 const를 붙이면 해당 변수는 처음에 지정된 값으로만 읽을 수 있으며, 새로운 값을 지정할 수 없다. #2. non-constant pointer to constant data (포인터 변수의 상수화) const int *p = &x; *p = 10..

C · C++ 2021.12.21

[C++] namespace 사용 및 특징

Namespace 사용(접근) 일반적으로, namespace 안 identifer 접근에는 범위 확인 연산자가 사용된다. [C++] 범위 확인 연산자 (::) Scope Resolution Operator 범위 확인 연산자 :: 은 특정 namespace에 포함되는 identifer 접근에 사용된다. namespace foo { void init(void) { } // ① } namespace goo { void init(void) { } // ② } void ini.. pandas-are-bears.tistory.com 예를 들어, foo라는 namespace 안 check라는 이름의 함수를 호출하려면 다음과 같은 코드 작성이 필요하다. int main(void) { foo::check(); } 이 c..

C · C++ 2021.12.18

[C++] 범위 확인 연산자 (::)

Scope Resolution Operator 범위 확인 연산자 ::은 특정 namespace에 포함되는 identifer 접근에 사용된다. namespace foo { void init(void) { }// ① } namespace goo { void init(void) { }// ② } void init(void) { }// ③ 앞선 글에서 설명했듯이, 각 ① ② ③ 함수는 모두 같은 이름을 갖지만 서로 각기 다른 namespace 안에 정의된 함수이다. [C++] namespace 변수나 함수, 구조체 등에 사용되는 이름은 해당 요소를 지정하는 identifier이다. Identifier의 역할을 수행하려면 각 이름은 unique 해야 하는데.. 프로그램의 규모가 커 많은 함수가 포함될수록, 또 p..

C · C++ 2021.12.15

[C++] namespace

변수나 함수, 구조체 등에 사용되는 이름은 해당 요소를 지정하는 identifier이다. Identifier의 역할을 수행하려면 각 이름은 unique 해야 하는데.. 프로그램의 규모가 커 많은 함수가 포함될수록, 또 많은 library를 포함할수록 개발자가 사용하려는 이름이 이미 선언된 identifier와 충돌할 가능성이 높아진다. C 언어에서는 어쩔 수 없이 최대한 unique 한 identifier를 개발자가 쥐어짜 내어야 하지만 C++은 namespace 문법을 도입하여 이러한 이름 충돌 문제를 해결하였다. namespace foo { void init(void) { }// ① } namespace goo { void init(void) { }// ② } void init(void) { }// ..

C · C++ 2021.12.15