두 개의 다른 헤더 파일 (하나는 표준 assert.h 임)과 assert 함수가 있습니다. 이러한 헤더 파일을 제어 할 수 없어 (그래서 변경할 수 없습니다). 이 두 함수 사이의 충돌을 설명하는 컴파일러 오류가 발생합니다. assert.h의 assert 함수를이 컴파일러 오류를 제거하는 데 사용해야한다는 것을 코드에서 어떻게 지정할 수 있습니까?C++ - 같은 이름을 가진 함수
답변
namespace OtherAssert
{
#include "private_assert.h"
}
//...
void foo()
{
OtherAssert::assert(true); // non-standard assert
assert(true); // the one from standard assert.h
}
이렇게하면 코드를 컴파일 할 수 있지만 더 이상 작업하지 않으면 (일반적으로) 링크되지 않습니다. 링커는'OtherAssert :: assert'를 찾을 것이고, 라이브러리가 (명백히)':: assert'를 대신 포함하고 있기 때문에 헤더에 선언 된 모든 함수가 인라인 함수로 정의되어 있지 않으면 링크가 실패합니다. –
@JerryCoffin 물론 자세한 내용에 따라 다릅니다. (아마도 함수가 인라인으로 선언 된 것 같습니다.) – cdhowie
@cdhowie : 좋은 지적입니다. 수정 됨. –
- 1. 자바 스크립트에서 같은 이름을 가진 함수
- 2. 같은 이름을 가진 Objective-C 카테고리
- 3. Python에서 함수 이름을 가진 문자열에 함수 지정
- 4. 변수의 이름을 가진 함수 정의?
- 5. SVN. 같은 이름을 가진 ACL이 다른 리포지토리
- 6. 같은 이름을 가진 다른 파일 시스템을 구별하십시오.
- 7. 같은 이름을 가진 한 아이의 부모를 찾기
- 8. 같은 이름을 가진 두 개의 필드
- 9. 같은 이름을 가진 PHP 여러 클래스와 메소드
- 10. C++ 현재 함수 이름을 문자열로
- 11. 내부 함수와 같은 이름을 가진 외부 함수를 호출하십시오.
- 12. C# 특정 이름을 가진 변수를 할당하십시오.
- 13. 불완전한 인수를 가진 C++ 함수 호출
- 14. C++ - 클래스와 같은 이름의 클래스에서 함수 호출하기
- 15. C++ 동일한 변수 이름을 가진 여러 부모들
- 16. 여러 유형 이름을 가진 C++ 템플릿
- 17. $ this를 가진 콜백 함수
- 18. C#을 속성의 함수 이름을 제어
- 19. 파일 이름을 가진 폴더의 이름을 바꾸는 파일
- 20. C#의 함수 포인터에서 함수 이름을 가져 오는 방법은 무엇입니까?
- 21. jQuery 함수 : 번갈아 사용하는 이름을 가진 토글, 토글
- 22. 브라우저는 어떻게 동일한 이름을 가진 여러 함수 선언을 처리합니까?
- 23. 보석의 이름을 가진 모델
- 24. C++ 함수 내부에서 함수 이름을 가져 오는 방법이 있습니까?
- 25. Objective C, C++, 동일한 클래스 이름을 가진 두 파일 포함
- 26. 같은 클래스 이름을 가진 다른 네임 스페이스로 클래스 확장하기
- 27. 이클립스 패치 파일이 다른 이름을 가진 같은 프로젝트에서 작동하지 않는다
- 28. 자바 스크립트는 같은 이름을 가진 모든 태그를 얻을
- 29. 같은 이름을 가진 두 개의 패키지 가져 오기
- 30. 같은 옵션이지만 다른 이름을 가진 선택 상자를 추가하십시오.
[이것은 매크로가 아니며 기능입니다] (http://en.cppreference.com/w/cpp/error/assert). '#undef assert'해야합니다. 그래도 잘 될지 모르겠다. – chris
정확한 오류를 게시하십시오. 보시다시피, 모호한 질문은 추측으로 이어집니다. –
사이드 노트 : 당신은'assert.h'가 아니라'cassert'를 사용해야합니다. 물론 네임 스페이스 배치는 매크로 일 때 중요하지 않습니다. – chris