C & C++/C++

[C++] C++ 헷갈리는 개념 간단 정리 (2)

Razelo 2022. 11. 9. 10:31

1. #include 순서 

include 하는 헤더파일에도 순서가 있다. 

1) 시스템 라이브러리의 헤더파일 

2) 다른 라이브러리의 헤더파일 

3) 현재 프로젝트의 헤더파일 

이 순서로 나열하면 가독성을 높일 수 있고 종속성도 피할 수 있다고 한다. 

(참고로 이 문제는 오늘 아침에 직접 겪었는데 redis 와 winsock2 헤더는 서로 충돌한다. 

winsock2를 아래로 내려주니 작동하는 것을 확인할 수 있었다. )

 

2) ZeroMemory() 

구조체를 초기화할때 쓰인다. ZeroMemory랑 memset은 그냥 같다고 보면 된다. 

다만 memset 의 경우에 메모리를 인자로 받은 char형 변수(1byte)로 채워주고 ZeroMemory는 메모리를

0으로 채워준다는 점이 다르다고 한다. 오버헤드 차이도 별로 없고 그냥 명시적으로 0으로 채운다고 

하고 싶으면 ZeroMemory를 쓰면 된다고 한다.

(그런데 이럴거면 굳이 ZeroMemory를 쓸 이유가 있나?

그냥 쓰던 memset쓰는게 좀 더 편할 것 같은데 가독성 면에서는 memset이 더 나은 것 같다. 개인적인 생각이지만 ZeroMemory라는 어감이 다른 추측을 할 수 있는 위험성을 갖고 있는 것 같아서 그런 생각이 든다.)

 

c++ 너무 어렵네... 

 

아래 블로그에서 많은 도움을 받았습니다. 

 

감사합니다. 

 

https://rockdrumy.tistory.com/493

 

[C/C++] ZeroMemory() , memset() 차이

여러분은 구조체를 초기화 할 때, 어떤 방법을 쓰십니까? 0으로 채워야 한다면요,. 보통 세가지 방법들을 많이 쓰실겁니다. 먼저 Original C에서 부터 즐겨 사용되어 오던 memset()함수가 있겠고요, 둘

rockdrumy.tistory.com

 

반응형