#ifndef가 동작을 안한다?
카테고리 없음 / 2017. 1. 14. 23:30
소스파일 여기저기에서 다른파일을 include하게 되어 버렸다.
컴파일할때, 중복함수 링크 에러가 발생한다.
아래처럼하면, include가 안되어야 되는것 아닌가?
#ifndef uart_c
#define uart_c
...
#endif//uart_c
원인
------------------------------
매크로는 1개의 파일(include 포함)에서만 동작한다.
여러개의 소스파일이, 각각 컴파일된 경우, 적용되지 않는다.
(하나의 파일에 모두 include되면, 동작한다.)
해결방안
------------------------------
#ifdef 보다는 #pragma once 를 사용하라.
(처음 컴파일되는 파일에 한번만 넣으면 된다.)
pragma once - Wikipedia
https://en.wikipedia.org/wiki/Pragma_once이 페이지 번역하기
In the C and C++ programming languages, #pragma once is a non-standard but widely ... It is important to note that some compilers such as GCC, Clang, and ...#ifndef... 와 #pragma once의 차이점이 뭔가요? | KLDP
https://kldp.org › Forums
2005. 1. 28. - 댓글 6 - 작성자 6
후자가 표준인지 아닌지는 정확히는 모르지만, GCC 및 VC++ 둘 다 잘 ... ps2) GCC CPP 매뉴얼을 보니, 이제는 꼭 #pragma once를 안써주고 ...c++ - Is #pragma once a safe include guard? - Stack Overflow
stackoverflow.com/.../is-pragma-once-a-safe-include...이 페이지 번역하기
2009. 4. 24. - It should work on any modern compiler, but I don't see any reason not to use a .... GCCsupports #pragma once officially as of version 3.4.