U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

C 与 C++ 的 inline 关键字全解

来源:http://www.tudoupe.com时间:2022-01-08

依此规定,汇编者在gcc/g+9.4中行事。

目录

1 前置知识

2C 内嵌

2.1C作为函数描述符(C99)

非静态、非外部内部内部职能2.1.1

二.一.2 非静态外部连接的互连功能

2.1.3 固定的内部非外部职能

2.2 在属性说明系列(C23)中,内嵌

3 内行 C++

3.1.1 C++ 内部职能

C++中三个内部联盟变量

3.3 连接函数与宏观链接

三. 属性描述序列(C+11)内插的三

4 References

1 前置知识

C++中的C-静态关键词在_yihuajack的博客-CSDN中得到了全面解释。 1 前置知识参考本系列的上一篇文章:C 与 C++ 的 extern 关键字全解_yihuajack的博客-CSDN博客依此规定,汇编者在gcc/g+9.4中行事。1 前置知识1.1 声明、定义与初始化声明(声明式)= declarationextern int x;std::size_t numDigits(int number);class Widget;template<typename T>class GraphNode;定义(定义式)= definitionint x;s https://blog.csdn.net/yihuajack/article/details/122330115?spm=1001.2014.3001.5501

2C 内嵌

2.1C作为函数描述符(C99)

内线描述符的目的是警告编译者优化,如果编译者与函数连接,则替换函数的所有调用,以避免函数调用的成本。

(1) 任何具有内部联系的功能都可以被宣布为国家内联(例如,在C中)。状态函数是唯一有内部连接的函数 。这意味着,只要是状态函数,就可将其定义为状态内嵌函数。
(2) 无效的内部功能不能在文件字段中创建非争议功能局域状态对象或使用状态对象。

定义规则不适用于不同翻译模块的内部定义。

内链接函数如同静态函数一样,可用于在页眉文件中声明该函数,并在同一个应用程序的许多翻译单位中包括页眉。

若干功能声明不可内化:
(1) 变量参数(可变行动)
(2) 使用了阿洛卡。
(3) 使用计算机传译(没有中文译文)用于 C 扩展的 GNU,真的是佛特兰的指定任务可参考 Goto - Wikipedia )
(4) 经常使用,goto
(5) 使用嵌入功能
(6) 使用了Setjmp。
(7) 使用了 _Nuiltin_longjmp。
(8) 使用了 _Niltin_return 或 _Niltin_apitly_args。

非静态、非外部内部内部职能2.1.1

与传统的 C 函数默认于外部功能不同,外部( 其他翻译单位/文件)无法查阅外部( 其他翻译单位/文件)未通过外部公开宣布的内部功能定义,允许其他翻译单位创建相同名称的功能( 尽管这既不推荐也不有意义)。

NB. 不同于C99和GNU99, GNU89 Central Afrimay Central Afrimay 状态非外部功能被指定为内部可见功能,因此,只要翻译模块C99 和 GNU99 的翻译模块定义,GNU89 Central Afrimay Central Afrimay 状态非外部功能被指定为内部可见功能,就可以在没有声明的情况下使用,只要翻译模块定义即可。

内部职能的内部定义既不是静态的也不是外部的,也不提供外部定义,例如,宣布内部职能并不提供外部定义。

如果在源文件文件中声明此内部函数, 然后在同一个或另一个源文件中使用

gcc 编译器将因此为“ foo” 产生错误; 如果源文件中指定了此错误,在另一个源文件中定义 Foo, 以警告内嵌动作“ foo” 定义, 但从未确定 。因此,要加以利用,必须在本翻译模块中至少再次声明一次功能Foo(说明和定义只能放在一个翻译模块中)。它存在于源文件和信头文件中也可以独立插入源文件和信头文件。因为函数 C 指定了默认例外, 您可以忽略一个例外 。其他共同创建的源文件可以通过使用带有语句的语句或页眉文件来使用内部链接功能;如果使用语句,则必须在与语句相同的翻译模块中声明。否则,就会有未界定的行为。ISO/IEC 9899:199。

内部链接功能的地址始终是一个外部界定的地址;然而,当该地址调用一个函数时,是没有标明内部链接定义(如果在翻译模块中存在)还是外部定义。

实际上,非静态非外部功能很少在代码中使用(通常在内部申报)。标准做法是在页眉文件中创建这样的函数,然后使用外部或外部线条在有必要使用的源文件中声明函数(对于C,这是函数声明)。在某些翻译模块中,函数被内嵌定义。它无须在任何地方申报内线。

一个非静态的内部函数无法创建一个非静态函数本地静态对象或使用文件字段静态对象 :

前一组合函数的两个定义不正确。

对于非静态内部 GNU C90 常规(即 GNU89 或 GNU90),由于全球符号只能在程序中指定一次,而函数无法在其他源文件中定义,因此汇编者必须假定其他源文件将使用该函数;这些调用无法整合;非静态内部函数总是单独构建的,因此,在程序中只能指定非静态内部函数,而该函数无法在其他源文件中定义,因此,汇编者必须假设其他源文件将调用该函数;这些调用无法整合;非静态内部函数总是单独汇编。

二.一.2 非静态外部连接的互连功能

外部实习生是一种职能,它提供与内部链接功能的外部链接。

除任何编译优化外,外加内插函数和外加函数相同。

与内部职能不同,这种内部职能并非非同寻常地非静态,您可直接在首页或源文件直接使用该函数来声明一项函数,而无需撰写附加声明。然而,如果一个源文件在联合汇编过程中打通另一个内线,同样的措辞仍然是必要的。

对于GNU C90,只为内部联系确定了外部职能。它不能单独编译,即使它被明确引用为它的地址(因为你只指定了功能,而没有定义),因此,地址是外部参考。它具有与宏观类似的影响。用于定义页眉文件中的函数。将函数定义的副本放入库文件中,但不包括外部术语和内线。

2.1.3 固定的内部非外部职能

静态函数创建与内链接函数的内部连接。

除了可能的编译优化之外,ISO C状态线功能和状态功能之间没有区别。

作为内部职能的一个未说明的例子,函数可以直接由页眉或源码文件中的国家内行直接定义,而无需进一步声明;例如,不属于额外非静态功能的内部功能可以直接由页眉或源码文件中的国家内行申报。只为当前翻译模块显示静态内线( 不是外部) 。其它文件不能使用。

2.2 在属性说明系列(C23)中,内嵌

C23 允许下列内线属性:
一. [[gnu:alway_inline]],与 GNUC 标准不变的内嵌属性和关键词 _forminline 相对应:

在函数语句之前,您也可以写入 。

因此,禁止实验性内部联系,并试图进行联系,而不论理想水平如何,但不能保证这种联系永远存在。

2. [[gnu:gnu_inline]],与 GNU C 标准 gnu_inline 属性相对应,其功能是改变 GNU 现有内线表达式的含义,即:
任何非外部语句的内含关键词只是一个提示。GNU89和C99在非静态非外部功能方面的区别是,GNU89的语义状态非外部功能有外部链接(线外版本)。
b. 外部实习生内部声明不会产生线外声明。

3 内行 C++

允许编译者使用内置替换来替换任何未被指定为内联的函数,以及调用以内联定义化关键词标记的内联定义化函数来调用非强制性关键词,编译者可自由使用内置替换来替换任何未被指定为内联的函数,以及调用内联标记的功能。

(1) 在访问的翻译模块中必须提供内部链接功能或变量的定义。
(2) 内线描述器无法对翻译模块中被宣布为无连接的函数或变量进行重述。
(3) 内线描述符不能用于块字段(侧边功能)的函数或可变声明。

外部链接的内部功能或变量:
(1) 在整个行动中不止一次,只要每个定义都存在于一个不同的翻译模块中(非静态内部函数和变量),而且所有定义都是平等的(不同地定义为导致未定义的行为),例如,其中一个定义是G++。例如,内部函数或变量可以在 # 包括信头文件中指定, 在许多源文件中可以找到 。
(2) 必须在每一翻译模块的内线中加以界定。
(3) 每个翻译模块的地址相同。

用法:在头文件中
(1) 规定多个源文件中的所有函数必须内嵌。
(2) 多源文件和外部链接的变量必须内嵌。

3.1.1 C++ 内部职能

当《宣言》说明系列用于界定功能时,该功能被宣布为内部链接(内线)。

隐含的内部职能是声称有复古功能。

功能性本地静态物体在所有功能声明的所有翻译单位中共享(它们与特定翻译模块中以同样方式宣布的物体有关)。
b. 所有翻译单位在所有功能申报中都有相同的类型。

命名的空间字段的内部 Const 变量带有默认外部链接 。

根据ISO C++,隐含的内部职能是指在类别、结构或单位定义范围内充分界定的职能(例如定义为成员职能或类别中非成员朋友职能)。也就是说,即使它们不作为内联式声明显示,它们也将被当作内部声明对待。没有必要重复声明的内容。从C+20开始假定它们必须与全球模块相联系。相对而言,

如果您想明确指定成员类型为内嵌功能,请在体外定义。

不同于 C,如果您不将 C++ 内线函数定义为状态,它就会有一个外部链接。内线功能,无需重新定义,即可直接用于本翻译模块(但必须在别处声明)。因为它给出了第二个定义。

汇编者往往不链接下列功能:
(1) 包含循环
(2) 包括静态变量。
(3) 递归的
(4) 返回类型并非无效,但方法不返回
(5) 有开关声明或通勤声明。

GNU C++ 以与 C 相同的方式支持额外的内嵌和状态内嵌 。

C++中三个内部联盟变量

当用于静态储存期变量(单级成员或命名的空间字段变量)时,使用内线描述符将变量指定为内部变量。

相同的静态会籍变量(但不是命名空间字段变量)是一个隐含的内部变量。

命名的空间字段的内部 Const 变量带有默认外部链接 。

3.3 连接函数与宏观链接

一. 链接功能符合类型安全协议。
二. 内部和常规功能的语法相同。
3。内部网络函数的参数只搜索一次,但不需要找到宏。

三. 属性描述序列(C+11)内插的三

C属性描述序列中的内线与C属性描述序列中的内线相同。

4 References

[1] GeeksforGeeks.Inline function in C . GeeksforGeeks, Dec. 3, 2018. URL: https://www.geeksforgeeks.org/inline-function-in-c/ .
[2] Sven Marnach et al.Is "inline" without "static" or "extern" ever useful in C99? Jan. 29, 2020. URL: https://stackoverflow.com/questions/6312597/is-inline-without-static-or-extern-ever-useful-in-c99 .
[3] Free Software Foundation.6.45 An Inline Function is As Fast As a Macro . Free Software Foundation, 2022. URL: https://gcc.gnu.org/onlinedocs/gcc/Inline.html .
[4] The Clang Team.Attributes in Clang . The Clang Team, 2022. URL: https://clang.llvm.org/docs/AttributeReference.html .
[5] Cppreference Contributors.Attribute specifier sequence(since C23) — Cppreference . [Online; accessed 7-January-2022]. Dec. 8, 2021. URL: https://en.cppreference.com/w/c/language/attributes .
[6] Cppreference Contributors.Inline function specifier — Cppreference. [Online; accessed 7-January-2022]. June 24, 2021. URL: https://en.cppreference.com/w/c/language/inline .
[7] Meet Pravasi. Inline Functions in C++. GeeksforGeeks, Sept. 7, 2018. URL: https://www.geeksforgeeks.org/inline-functions-cpp .
[8] Cppreference Contributors.Inline specifier — Cppreference. [Online; accessed 8-January-2022]. Sept. 2, 2021. URL: https://en.cppreference.com/w/cpp/language/inline .
[9] Colin Robertson et al.Inline Functions (C++) . Microsoft, Aug. 4, 2021. URL: https://docs.microsoft.com/en-us/cpp/cpp/inline-functions-cpp?view=msvc-170 .
[10] user3810155 et al.What is the use of the `inline` keyword in C? June 20, 2020. URL: https://stackoverflow.com/questions/31108159/what-is-the-use-of-the-inline-keyword-in-c .
[11] wilbur_m et al.What does extern inline do? Dec. 31, 2019. URL: https://stackoverflow.com/questions/216510/what-does-extern-inline-do .
[12] Wikipedia Contributors.Inline function — Wikipedia, The Free Encyclopedia . [Online; accessed 8-January-2022]. Nov. 5, 2021. URL: https://en.wikipedia.org/wiki/Inline_function .
[13] Wikipedia Contributors.Inline expansion — Wikipedia, The Free Encyclopedia . [Online; accessed 8-January-2022]. Dec. 25, 2021. URL: https://en.wikipedia.org/wiki/Inline_expansion .

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息