[완료]__FILE__, __LINE__, __FUNC__ 는 어떤원리로 값을 얻어올수 있나요?

sia79의 이미지

__FILE__, __LINE__, __FUNC__ (C99)

이런 것들은 어떤 원리로 알아올 수 있는 것인가요? 굉장히 궁금합니다.

함수이름 얻어오는 것같은 것은 한번 만들어보려다가 못했었는데, 나머지도 만들어보려다가 제가 잘 몰라서 못했는데.

알려주세요. 감사합니다.

hey의 이미지

컴파일러가 넣어주는 겁니다. 컴파일 시점엔 알고 있잖아요 ^^

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


sia79의 이미지

결국 프로그래밍으로는 불가능한 일이었군요.

hey의 이미지

어, 그런데, 함수 이름 정도는 얻어올 수 있습니다. ^^ ;
디버그 정보를 이용하면 가능한데요, KLDP에서도 읽은 적이 있으니까 검색어를 잘 정해서 찾아보시고 덧글 달아주세요 ^^

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


sia79의 이미지

디버그 디버그정보 함수이름 함수이름취득 함수이름얻기 함수이름가져오기... 등등으로 구글찾기로 검색했는데요. 못찾았어요.

kuru의 이미지

gcc manual 찾아보시면 line directive라고 나옵니다.
이것을 이용하면 __LINE__, __FUNCTION__으로 출력되는 내용을 임의로 변경할 수 있습니다.

cppig1995의 이미지

__func__가 C99 표준입니다.
------------------------------------------------------
In simplexitate est opportunitas. --cppig1995
[낡배밀] 낡은 리눅스 배포판을 밀어내야 한다고 생각합니다.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

yesarang의 이미지

__FILE__, __LINE__ 등은 전처리기가 넣어주는 것이고, __FUNCTION__ 는 전처리기 또는 컴파일러, __func__ 는 컴파일러가 넣어주는 것이지요.

예사랑의 이미지

__FILE__, __LINE__ 은 전처리기가 처리해 주고, __func__ 는 컴파일러가 처리해 주는 것이지요. __FUNCTION__ 은 컴파일러마다 다른 것 같구요.