什么是_LIBCPP_INLINE_VISIBILITY?

LLVM libc ++头文件具有一个宏,该宏用于函数声明中,名为_LIBCPP_INLINE_VISIBILITY

我不明白这意味着什么;我看着它的定义,它说:

// Just so we can migrate to the new macros gradually.
#define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI

...,第二个宏没有定义,我可以找到。那么,_LIBCPP_INLINE_VISIBILITY是什么意思,通常会扩展成什么?

jiayibeibao 回答:什么是_LIBCPP_INLINE_VISIBILITY?

(谢谢@Ruslan)

因此,其目的实际上是隐藏带有此宏标记的函数,使其不出现在动态库中(“从ABI隐藏”)。过去,通过仅使它们内联来完成此操作,但是现在使用了clang属性string symbol = MapSymbol("EURUSDu"); // pass string and get output Console.WriteLine($"Symbol is {symbol}"); // output public static string MapSymbol(string symbol) { try { symbol = symbol.Trim(); string symbolReturn = ""; List<string> symbolList = new List<string>() { "AUDCADu","AUDJPYu","AUDNZDu","AUDUSDf","AUDUSDu","CADJPYu","EURAUDu","EURCADu","EURCHFu","EURGBPu","EURJPYu","EURNZDu","EURUSDf","EURUSDu","GBPAUDu","GBPCADu","GBPCHFu","GBPJPYu","GBPNZDu","GBPUSDf","GBPUSDu","GER30u","HK50u","JPN225u","NAS100u","NZDCADu","NZDUSDf","NZDUSDu","SPX500u","UK100u","UKOILu","US30u","USDCADf","USDCADu","USDCHFf","USDCHFu","USDJPYf","USDJPYu","USDXu","USOILu","XAGUSDf","XAGUSDfv","XAGUSDu","XAUUSDf","XAUUSDfv","XAUUSDu","XINA50u" }; foreach (var item in symbolList) { if (item == symbol) { symbolReturn = item; break; } else if (item == symbol.Substring(0,Math.Min(symbol.Length,6))) { symbolReturn = item; break; } else if (item.Substring(0,Math.Min(item.Length,6)) == symbol) { symbolReturn = item; break; } else if (item.Substring(0,6)) == symbol.Substring(0,6))) { symbolReturn = item; break; } else { symbolReturn = null; } } return symbolReturn; } catch (Exception ex) { Console.WriteLine($"Exception in maping symbol,{ex.Message}"); return null; } } ;这就是attribute((internal_linkage))的定义。至于内联的隐身宏_LIBCPP_HIDE_FROM_ABI-它已被重新定义为其名称应具有的名称。

本文链接:https://www.f2er.com/2927112.html

大家都在问