을 __func합니다. 이 추가 수준의 간접 지정을 추가 할 때 일반적인 의도는 무엇입니까? - __list_add 내부의 코드를 list_add에 넣을 수없는 이유는 무엇입니까?간접는 FUNC에서()() 코드 조각을 인용
답변
수 있습니다.
그러나 __list_add()
에 코드를 공유 할 수있는 다른 공개 항목이있을 수 있습니다. 예를 들어, push()
또는 insert_head()
또는 그와 비슷한 것이있을 수 있습니다.
참고 : C++ 인 경우 예약어이므로 변수 new
을 다시 호출 할 수 있습니다.
코드 재사용 및 중복 방지에 관한 내용입니다.
__list_add()
에는 이보다 더 많은 상황에서 유용한 코드가 들어 있으며 여러 다른 기능간에 공유 할 수 있습니다. __list_add()
에 버그가 있다면
- 당신은 그것을 수정 프로그램을 얻을 사용하여 모든 기능을 수정 :이 같은
공유 코드는 몇 가지 장점이 있습니다.
__list_add()
이 향상되면 (예 : 더 빠르게 만들 때) 모든 기능이 빨라집니다.- 항목을 목록에 추가하는 방법을보고 싶을 때 한 곳만 볼 수 있습니다.
__list_add는 내부적으로 여러 용도로 사용되는 "개인"내부 기능으로 사용됩니다. list_add에 대한 대중의 관심은 그 주위에 편리한 래퍼로서 존재합니다.
코드를 복사하면 유지 관리가 어려워집니다. 이 예에서 간접 참조의 추가 레벨은 매개 변수를 숨 깁니다. 012 대신에 2 개의 매개 변수가있는 함수를 제공합니다.
__list_add() 안의 코드를 복사하면 여러 위치에 복사해야합니다. 목록 메커니즘이 다소 변경되면이 모든 장소를 업데이트해야하거나 버그가 팝업되기 시작합니다 (예 : 목록의 FIFO 및 LIFO 구현이 다른 동작을 표시 함).
항상 상충 관계가 있습니다. 또 다른 수준의 간접 지정은 코드 줄을 복제하거나 API에 많은 매개 변수를 갖는 것과는 달리 복잡성과 오버 헤드를 추가합니다.
+1은 spot_add가 2를 취하고 __list_add가 3 개의 매개 변수를 취한다는 것을 나타냅니다. –
이 기능은 리눅스 커널에서 제공됩니다.
가보세요 : __list_add()
__list_add()
가 많은 장소에서 사용됩니다 는 일반리스트의 구현에 속하는 예를 들어,목록 머리에 요소를 추가하는 list_add()
, 목록 꼬리에 요소를 추가하는 list_add_tail()
... 지정된 위치에 요소를 삽입하는 데에도 사용할 수 있습니다.
재귀 함수에 대한 래퍼 함수를 정의하여 초기 매개 변수가 올바르게 설정되도록하는 것이 일반적입니다.
은 바이너리 호환성을 유지하기 위해 할 수 Recursion (computer science)
에 대한 위키 피 디아에 이진 검색을 참조하십시오. ABI 불변성을 유지할 수있는 간접 지정이 있습니다. http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
에서
도서관의 새로운 버전 불리는 변경할 필요가 이전 와 바이너리 호환되지 않는 경우.
- 더 이상 그 원래 사양을 충족하도록 기능 변경의 동작,
- 수출 데이터 항목 : C에서, 는 라이브러리 바이너리 호환을 상실 할 네 가지 기본 이유가있다 변경 (예외 : 구조의 끝이 에 선택적 항목을 추가하면 해당 구조가 라이브러리 내에 으로 할당되어있는 한 으로 끝납니다.)
- 내 보낸 함수가 제거되었습니다.
- 내 보낸 함수의 인터페이스가 변경됩니다.
- 1. wpf 형식으로 코드 조각을 변환하십시오.
- 2. 비교 문자열이 코드 조각을 고려
- 3. 의도적으로 버그가있는 코드 조각을 찾고
- 4. Func에서 아무것도 반환하지 않습니까?
- 5. SQL Server에서 코드 샘플/조각을 저장하는 방법?
- 6. IntelliSense가 내 코드 조각을 잊어 버렸습니다!
- 7. 기존 유닉스 스크립트에 코드 조각을 포함합니다.
- 8. NH 나는이 코드 조각을 변환하고 싶은 QueryOver
- 9. 는이 코드 조각을 고려 HTMLAGILITY 팩
- 10. 어떻게 내가이 코드 조각을 사용하고 C#을
- 11. Visual Studio 매크로에서 코드 조각을 삽입하십시오.
- 12. body 태그의 끝에 javascript 코드 조각을 추가하십시오.
- 13. 자바 스크립트에서 코드 조각을 대기열에 넣는 방법
- 14. C#의 코드 조각을 VB.NET으로 변환
- 15. 이 코드 조각을 감안할 때 수신
- 16. 이 코드 조각을 C로 변환하는 방법 #
- 17. 코드 조각을 확인하려면 HTTPClient에 익숙한 사람이 필요합니다.
- 18. 오디오 트랙에서 코드 조각을 선택하는 자바 스크립트
- 19. PHP 코드 조각을 너무 간단하게 반복하십시오.
- 20. 중첩 된 bb 코드 인용 방법>
- 21. 정보를 func에서 func로 벡터로 저장
- 22. 나는 인용 부호가 부족
- 23. 인용 부호
- 24. Begin/EndInvoke를 Silverlight에서 작업 및 Func에서 호출
- 25. XML 조각을 저장하는 방법?
- 26. 예외 상태를 철저히 다루지 않고 코드 조각을 찾는 도구
- 27. 큰 코드 조각을 주석 처리 할 수있는 방법이 있습니까?
- 28. 코드 조각을 원자 단위로 만들 수 있습니까 (C#)?
- 29. 큰 상속 코드 조각을 그릴 수있는 가장 좋은 도구는 무엇입니까?
- 30. SOAPUI & 그루비 스크립트, 나는 다음과 같은 코드 조각을 사용하고,
이것은 분명히 C++이 아니며 C++에서 완전히 중복 된 struct 한정자를 참조하십시오. – EFraim