• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

function address출력 안되는 현상

23.06.30 11:50 작성 23.06.30 11:57 수정 조회수 160

1

warning과 함께 return1로 나옵니다. 어떻게 function address를 출력할 수 있을까요? compiler 문제같고 stackoverflow 찾아보니 매우 코드가 복잡해지던데 그런 방법들밖에 없겠죠?ㅠㅠ

 warning: address of function 'func' will always evaluate to 'true' [-Wpointer-bool-conversion]
#include <iostream>
using namespace std;

int func()
{
    return 5;
}

int main()
{
    printf("%p \n", func); // 잘나옴
    cout << func << endl; // 안나옴
    return 0;
}

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.06.30

안녕하세요, 답변 도우미 Soobak 입니다.

말씀하신대로, 질문자님의 환경 및 컴파일러에서 cout << func << endl 코드 라인의 func 에 대한 모호성 때문에 경고를 출력하는 것으로 보입니다.

제 환경에서도 질문자님과 같은 문제가 발생하는데요.
찾아보셨던 방법들이 무엇인지 제가 알 수가 없기에 답변을 드리기가 조금 애매하지만 🥲,
간단한 방법으로는 다음과 같이 void 포인터로 명시적으로 형변환을 해주어 출력하는 방법도 있습니다.

#include <iostream>
using namespace std;

int func()
{
  return 5;
}

int main()
{
  cout << reinterpret_cast<void*>(func) << endl;

  return 0;
}

질문자님의 현재 상황에서는 '명시적으로 포인터를 형변환 하는 방법도 있다'는 점 정도만 확인해두시면 좋을 것 같습니다.

void 포인터와 관련된 내용은 강의 6.18 보이드 포인터 을 참고하시면 도움이 되실 것 같습니다.
또한, reinterpret_cast 와 관련해서는 추후 필요시에 serialize / deserialize 의 키워드와 함께 검색을 해보셔도 좋을 것 같습니다.