나는 다음과 같은 방법 중 하나가 정의 된 C 소스 파일이? C에 관한 나의 작은 지식에 관한 한 '무효'는 아무것도 반환하지 않습니다. 그래서, 그것은 합법적 인 성명서입니까?무효 및 반환 유형
답변
방금 QDECL의 정의를 확인했습니다. 그것은
#define QDECL __cdecl
지금 당신의 선언이된다 여전히 무효 반환하는 함수입니다
void __cdecl prettyPrintf(int level)
입니다.
실제로 QDECL
은 함수의 반환 형식을 변경하지 않고 (이론적으로) 다른 형식을 사용할 수 있습니다. 그것은 쉽게 함수 프로토 타입은 여전히 QDECL의 정의를 찾을 기능을
QDECL
은 호출 규칙을 정의합니다. 이것은 __cdecl
또는 __stdcall
과 같은 것으로 평가 될 헤더 파일 중 하나에 정의 된 매크로입니다.
이 함수의 반환 형식에는 영향을주지 않습니다. 함수는 여전히 void
함수입니다. 코멘트에서
당신의 상태 : 여기
내 관심사는 I 포트 경우 자바 위의 코드는, 내가 알아서 할 필요가 없다는 것입니다?
아니요. 이것은 코드의 서로 다른 네이티브 라이브러리 간 인터페이스를위한 문제입니다. 코드가 Java에 있으면 호출 규칙을 무시할 수 있습니다.
런타임 중에 어떤 이점이 있습니까? 성능 향상이나 전문가의 코딩 스타일입니까? – UVM
@UNNI 성능, 이점 또는 코딩 스타일의 문제가 아닙니다. 한 라이브러리와 다른 라이브러리 사이의 이진 계약을 정의해야합니다. 이것은 공유 라이브러리에서 익스포트되는 함수입니다. 따라서 모든 당사자는 함수를 호출 할 때 동일한 규칙을 사용해야합니다.호출 규칙은 이러한 규칙을 성문화합니다. 이것을 읽으십시오 : http://en.wikipedia.org/wiki/Calling_convention –
QDECL
은 아마도 calling convention 힌트 (예 : __cdecl
또는 __stdcall
)로 해석되는 전처리 매크로 일 수 있습니다. 이는 호출 스택에서 매개 변수를 푸시 (push) 및 정리 (clean up)하는 방법을 정의하지만 함수의 리턴 유형을 변경하지는 않습니다. 주로 클라이언트와 다른 기본 호출 규칙을 사용하는 라이브러리를 사용할 때 상호 운용성을 위해 주로 사용됩니다.
- 1. 서브 클래스 및 반환 유형
- 2. Java Generics 및 반환 유형
- 3. 함수 반환 유형 및 포인터
- 4. 반환 유형 Java 및 C#
- 5. 반환 유형
- 6. 반환 유형
- 7. 비 무효 메소드 호출의 반환 값
- 8. 제네릭 수집 및 방법을 반환 유형
- 9. 인터페이스 {} 및 유형 어설 션이있는 다중 반환 유형
- 10. 속성에서 값 유형 반환
- 11. 파생 함수와 반환 유형 및 매개 변수가 모두
- 12. 반환 유형 Java의 부울
- 13. 반환 유형 vararg?
- 14. API 배열 반환 유형
- 15. 은 "반환 유형"
- 16. NHibernate에서 여러 반환 유형
- 17. __declspec 전후의 반환 유형?
- 18. 웹 서비스 반환 유형
- 19. C에서의 Const 반환 유형
- 20. 재귀 함수의 반환 유형
- 21. 반환 유형 일관성이 php5
- 22. NSMethodSignature의 반환 유형 얻기
- 23. typeOf 반환 유형
- 24. C 자동 반환 유형
- 25. PostgreSQL의 함수 반환 유형
- 26. valueForKeyPath에서 반환 유형 :?
- 27. IPlImage의 배열로 반환 유형
- 28. 오류 C2440 : '형식 캐스트': '무효 (__cdecl *) (무효)'
- 29. PHP에서 유형 힌트가있는 동적 반환 유형?
- 30. 매크로에서 함수의 반환 유형 얻기 (C++)
이동을 반환하는
void
입니다입니다, 지금
을 수 있었다 - 그것은으로 확장됩니다 [전화 컨벤션] (http://en.wikipedia.org/wiki/Calling_convention). 반환 유형과는 아무 관련이 없습니다. –나는 그것에 대해 들어 본 적이 없지만 __cdecl의 별명 인 것 같습니다. –
내 관심사는 여기에 내가 위의 코드를 자바로 포팅하면 이것을 처리해야 하는가? – UVM