Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- DHT11
- half adder
- D Flip Flop
- structural modeling
- LED
- ATMEGA128A
- prescaling
- vivado
- Recursion
- verilog
- ring counter
- Linked List
- Pspice
- Edge Detector
- soc 설계
- dataflow modeling
- i2c 통신
- test bench
- FND
- Algorithm
- atmega 128a
- java
- pwm
- gpio
- uart 통신
- behavioral modeling
- hc-sr04
- KEYPAD
- BASYS3
- stop watch
Archives
- Today
- Total
거북이처럼 천천히
C++ namespace 본문
1. C++ namespace
- C++과 C와의 차이점은 C++은 C와 비교하였을 때, 큰 프로젝트를 구현하기 위해 보다 적합하다는 장점을 갖고 있다.
- 큰 프로젝트가 커질 수록 개발자가 프로젝트에 사용되는 변수 및 함수 등의 키워드를 기억하기 어려우며, 이로 인해 중복 선언으로 인한 충돌이 발생할 가능성이 높아진다.
- 이를 방지하고자 코드를 그룹화하는 것이 namespace 인 것이다.
- namespace는 수많은 변수, 함수, 클래스들이 서로 겹쳐 충돌되는 상황을 방지하는 칸막이 및 폴더 역활을 수행하는 개념이다.

1.1. C++ namespace 예시
#include <iostream>
void function() {
std::cout << "Function1!";
}
void function() {
std::cout << "Function2!";
}

- 서로 다른 출력을 하지만, 함수명이 동일한 함수 2개가 존재하며, 이로 인해 디버깅 과정에서 컴파일 에러가 발생했음을 확인할 수 있다.
- 이러한 상황을 방지하고자 namespace을 활용하면 아래와 같이 수정할 수 있다.
#include <iostream>
namespace A {
void function() {
std::cout << "Function1!";
}
}
namespace B {
void function() {
std::cout << "Function2!";
}
}
int main() {
// A namespace을 통한 문자열 출력
A::function();
// B namespace을 통한 문자열 출력
B::function();
return 0;
}
- A와 B라는 namespace를 만들고, 각각의 namespace안에 함수를 정의하게 되면 동일한 함수명을 갖는다고 하더라도 서로 다른 namespace안에서 정의하였기 때문에 문법적인 충돌 및 컴파일 에러가 발생하지 않는다.
- namespace안에 있는 함수나 변수를 호출 및 사용하는 방법은 :: 연산자를 통해 접근이 가능하다.
- 당연하게도 namespace내에는 함수 뿐만 아니라 변수도 정의가 가능하다.
2. using namespace

- 앞에서도 설명했듯이 namespace에 정의된 함수나 변수를 사용하기 위해서는 :: 연산자를 통해 접근이 가능하다고 말했다.
- 그러나, 이러한 과정이 귀찮을 경우, using namespace 키워드를 통해 생략이 가능하다.
- 해당 키워드에 대한 사용을 지양한다. 왜냐하면 namespace을 사용하는 가장 큰 이유는 프로젝트에서 사용하는 변수명과 함수명의 충돌을 방지하는 목적을 갖고 있는데, 하나의 프로젝트에 여러 개의 spacename이 정의 되어 있음에도 불구하고, 하나의 spacename만 사용한다면 spacename의 목적과 맞지 않기 때문에 사용을 지양한다.
3. Basic Input/Output


- cout과 <<을 통해 문자열 출력 뿐만 아니라 cin과 >>을 통해 문자열 입력 받을 수 있다.
- std::endl 의 의미는 문자열의 끝 (end of line)을 의미하며, << 을 통해 뒤에 붙이게 될 경우 \n 과 통일하게 문자열 줄 바꿈되어 출력된다.
#include <iostream>
int main() {
int age = 30;
float height = 177.7f;
std::cout << "My age is " << age << "\n";
std::cout << "My height is " << height << "\n";
return 0;
}

#include <iostream>
int main() {
int age = 30;
float height = 177.7f;
std::cout << "My age is " << age << std::endl;
std::cout << "My height is " << height << std::endl;
return 0;
}

'C++' 카테고리의 다른 글
| C++ Generic pointer (0) | 2026.01.27 |
|---|---|
| C++ 스트림 (Stream) (0) | 2026.01.27 |
| C++ Programming Basic Structure (1) (0) | 2026.01.25 |