예를 들어 함수 A가있는 경우 코드의이 시점에서이 함수를 인라인해야하지만 수행하지는 말아야한다는 것을 컴파일러에 알릴 수 있습니까? 그 지점에서 전화하십시오).특정 호출에서만 함수를 인라인 할 수 있습니까?
0
A
답변
4
최소한 이식성이없는 호출을 인라인하도록 컴파일러에 선택적으로 지시 할 수 없습니다.
inline
은 컴파일러에 대한 제안 일 뿐이므로 컴파일러는 호출 지점까지 인라인 함수 본문을 인라인하기위한 제안을 따르거나 따르지 않을 수 있지만 컴파일러에서 한 정의 규칙과 같은 일부 조건을 완화합니다. 그러한 기능을 위해서.
0
내가 요구 사항이 유용하지 않다 생각하고, 질문에 대한 대답은 : 제
그러나 매크로 사용하여 그 효과에 뭔가를 얻을 수 있습니다
#define f_inline do { int i = 1 + 2; } while(0)
void f() {
f_inline;
}
이제 수를 f
코드를 강제로 적용하려면 f_inline;
을 사용하십시오.
1
gcc
은 noinline
및 always_inline
입니다.
0
은 특히 인라인 함수가 전혀 호출하면 여부를 중요하지 않습니다. What does __inline__ mean ?을 참조하십시오. 필자는 인라인되지 않은 함수를 작성하고 컴파일러가 최적으로 인라인하는 방법을 결정하게합니다.
static inline int foo_inline(int a, int b)
{
/* ... */
}
static int foo_noninline(int a, int b)
{
return foo_inline(a, b);
}
:
0
컴파일러는 무조건 inline
키워드의 사용 또는 비 사용을 수여하거나 GCC의 확장 __attribute__((__always_inline__))
및 __attribute__(__noinline__))
를 사용하는 경우, 당신은 간단한 래퍼 함수와 함께 당신이 원하는 것을 달성 할 수있는 경우
나는 inline
키워드로 작성했지만, 컴파일러는 보통 이것을 힌트로 취급하거나 심지어 무시하기 때문에 gcc 속성 버전을 원할 수도 있습니다.
관련 문제
- 1. 정적 멤버 함수를 인라인 할 수 있습니까?
- 2. 함수 포인터를 통해 사용되는 함수를 인라인 할 수 있습니까?
- 3. 리눅스 커널에서 함수를 고속 호출 및 인라인 할 수 있습니까?
- 4. 함수를 부분적으로 또는 선택적으로 인라인 할 수 있습니까?
- 5. GCC를 사용하여 어셈블리 출력으로 인라인 라인을 인라인 할 수 있습니까?
- 6. 데이터베이스 액세스 코드를 인라인 할 수 있습니까?
- 7. Scala에서 deprecated로 함수를 표시 할 수 있습니까?
- 8. 함수 대리자에게 함수를 인라인 할 수 있고 동시에 참조 할 수있는 방법이 있습니까?
- 9. 인라인 어셈블리 코드에서 특정 레지스터를 강제로 사용할 수 있습니까?
- 10. 인라인 함수의 선언과 정의를 분리 할 수 있습니까?
- 11. 어떻게 gcc에 함수를 인라인하지 말라고 할 수 있습니까?
- 12. 소스 코드에서 특정 함수를 호출 할 수있는 다른 함수를 쉽게 찾을 수 있습니까?
- 13. 특정 인라인 스타일 선택
- 14. SQL에서 sqlite3_limit() 함수를 호출 할 수 있습니까?
- 15. (monkeypatch) PHP 함수를 대체 할 수 있습니까?
- 16. memmove() 함수를 효율적으로 대체 할 수 있습니까?
- 17. GSP 안에 함수를 선언 할 수 있습니까?
- 18. VB.NET에서 함수를 deprecated로 표시 할 수 있습니까?
- 19. 개체에 함수를 오버로드 할 수 있습니까?
- 20. 기본 PHP 함수를 재정의 할 수 있습니까?
- 21. 열거 형의 함수를 선언 할 수 있습니까?
- 22. 파이썬에서 함수를 forward-declare 할 수 있습니까?
- 23. 누군가이 C 함수를 설명 할 수 있습니까?
- 24. .NET에서 MathGL 함수를 호출 할 수 있습니까?
- 25. ValidationSummary 후에 함수를 호출 할 수 있습니까?
- 26. matlab 클래스에서 함수를 오버로드 할 수 있습니까?
- 27. SqlCommand 함수를 재정의 할 수 있습니까?
- 28. VBA에서 java에서 함수를 호출 할 수 있습니까?
- 29. ObjectiveC 함수를 boost :: bind() 할 수 있습니까?
- 30. 생성 된 함수를 재정의 할 수 있습니까?