例如,如果我們有函數A,是否可以告訴編譯器,您需要在代碼的這一點內聯此函數,但不這樣做(make a打電話給它)。只能用某些調用內聯函數是否可能
0
A
回答
4
你不能有選擇地告訴編譯器內聯一些調用,至少不能移植。
請注意,inline
只是對編譯器的一個建議,編譯器可能會也可能不會遵從將內聯函數的主體內聯到調用點的建議,但編譯器會放寬像One定義規則這樣的一些條件對於這樣的功能。
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 ?。我只需編寫非內聯函數,並讓編譯器決定如何以最佳方式內聯它。
0
如果編譯器無條件榮譽您使用或不使用inline
關鍵字,或者如果您使用的是gcc擴展__attribute__((__always_inline__))
和__attribute__(__noinline__))
,那麼你可以達到你想要的東西用一個簡單的包裝功能:
static inline int foo_inline(int a, int b)
{
/* ... */
}
static int foo_noninline(int a, int b)
{
return foo_inline(a, b);
}
我用inline
關鍵字編寫了它,但由於編譯器通常只會將它視爲提示,甚至忽略它,所以您可能需要gcc屬性版本。
相關問題
- 1. 只能調用一次的大函數是內聯的嗎?
- 2. 是否有可能使用jQuery Mobile僅用於「某些」功能?
- 3. 是否有可能使某些函數用於創建調用程序不可用的庫?
- 4. 是否有可能在構造函數中調用函數? PHP
- 5. 是否有可能只建立某些模型?
- 6. 是否有可能只有某些實體的ComputedProperty?
- 7. 有可能在某處調用自調用函數方法嗎?
- 8. 是否有可能使用豬內置函數內置java udf
- 9. 是否有可能只在Perl中調用子程序調用?
- 10. 是否有可能在C++中禁止在編譯時調用某個函數?
- 11. 是否有可能只給某些文件夾訪問應用程序?
- 12. 是否有可能某些網絡數據包是空字節?
- 13. 不能從同級內調用函數,但否則可以?
- 14. 某些java處理函數只有當結果可用時才能獲取url.openStream()
- 15. 在使用python調用函數之前,是否可以使某個函數的某些部分運行?
- 16. 在函數內調用require時是否會影響性能?
- 17. 可以HotSpot內聯lambda函數調用?
- 18. 是否可以重寫內聯函數?
- 19. 是否可以預測SWF可能調用哪些事件?
- 20. 只能從某些行
- 21. 是否有可能從Scala調用Python函數(spark)
- 22. 是否有可能通過setTimeout調用自定義函數Node.js
- 23. 是否有可能從不同的線程調用JS函數?
- 24. 是否有可能從aiml調用Java函數?
- 25. 是否有可能在變量上調用jquery函數?
- 26. 是否有可能從Silverlight/C#中調用matlab函數?
- 27. 是否有可能從SQL中調用sqlite3_limit()函數
- 28. 是否有可能從基類調用派生類函數
- 29. 是否有可能只用相機
- 30. 我怎樣才能調用&填充函數2d參數內聯?