狐媚是什么意思| 女人吃枸杞有什么好处| 什么的工作| 益禾堂什么好喝| 料酒可以用什么代替| 落花生是什么意思| x片和ct有什么区别| 腰椎mri是什么检查| 夏吃姜有什么好处| 瘸子是什么意思| 绿色心情是什么意思| 什么名字好听男生| feno是什么检查| 百合什么时候开花| 1985是什么年| 嘴唇有黑斑是什么原因| 0中间有一横是什么字体| edf是什么意思| 生菜不能和什么一起吃| 低血压吃什么好的最快| 6月28号什么星座| 脉涩是什么意思| 基因病是什么意思| 玻璃的原材料是什么| 眼白浑浊是什么原因| 眼有眼屎是什么原因| 乙肝有什么明显的症状| 麻长什么样子图片| 缺钠是什么原因造成的| 眼尖什么意思| 高丽参有什么功效| 女生掉头发严重是什么原因| viagra是什么药| 轻微食物中毒吃什么药| 纸片人是什么意思| 晨尿浑浊是什么原因| 什么叫同房| 子宫内膜囊性增生是什么意思| 垂盆草长什么样| 为什么打嗝| ac疫苗是预防什么的| 一什么蔷薇| 上日下成念什么| 20分贝相当于什么声音| 什么是信念| 1996年属什么| 办理健康证需要什么材料| viola是什么意思| 慢性鼻炎用什么药| 有机食品是什么意思| 视力模糊是什么原因| 左下腹疼挂什么科| 洗手指征是什么| 梦见拉屎是什么意思| aso是什么意思| 杏干泡水喝有什么功效| 口腔溃疡用什么药好得快| 梅毒和艾滋病有什么区别| 尿蛋白三个加号吃什么药| 膈肌痉挛吃什么药| 亚急性甲状腺炎吃什么药| 小鸡吃什么食物| 手淫过度有什么症状| 上火吃什么最快能降火| 超市是什么意思| 睾丸扭转是什么导致的| 苔菜是什么菜图片| 夏季风寒感冒吃什么药| 什么牌子洗衣机好| 男人肾虚吃什么补得快| 睾丸变小了是什么原因| 水命中什么水命最好| 鳌虾吃什么| 好人卡什么意思| 尿蛋白是什么病| 抠是什么意思| 1962年属什么生肖| 内能与什么因素有关| hpv用什么药| 芹菜和西芹有什么区别| 走马观花的走是什么意思| 社会科学院是干什么的| 什么不生| 气虚吃什么| 澎湃的什么| 乌龟吃什么| 钦字五行属什么| 什么是医保| 被蝎子蛰了有什么好处| 中文是什么意思| 甲低有什么症状表现| 肾与性功能有什么关系| 里程是什么意思| 红色尿液是什么原因| 掉发是什么原因| 今年什么时候立秋| 黑暗料理是什么意思| 什么季节掉头发最厉害| 1551是什么意思| 路过是什么意思| 疮疡是什么意思| jones是什么意思| 幽门螺杆菌是什么引起的| 为什么爱放屁| 胃穿孔是什么原因引起的| 梦见要账是什么意思| 杨幂的公司叫什么名字| 怀孕可以吃什么| pc材质是什么| 乳腺结节3类什么意思| 饮食清淡主要吃什么| 酸根是什么| 返流性食管炎用什么药| 化疗期间不能吃什么| 植村秀属于什么档次| 血压高吃什么降压药| 不劳而获是什么生肖| 血压低是什么症状| 织女是什么意思| 后脑勺麻木是什么征兆| 56年属什么生肖| 神经损伤是什么症状| 筷子在古代叫什么| 下午8点是什么时辰| 荷兰猪吃什么| 例假期间吃什么减肥| 月经颜色发黑是什么原因| 什么是肾癌| 热射病是什么病| 避免是什么意思| 尿有味是什么原因| 无家可归是什么生肖| 9月份怀孕预产期是什么时候| 脂肪酸是什么| 扁桃体为什么会发炎| 为什么叫基围虾| 腿上有白点是什么原因| 佰草集适合什么年龄| 脸色发黑是什么病的前兆| 定期是什么意思| 什么叫布施| 便血是什么原因| 肠易激综合征是什么原因造成的| 男属鸡的和什么属相最配| 男人射的快是什么原因| 是什么样的| 连长是什么级别| 老梗是什么病| 肠系膜淋巴结肿大吃什么药| 一直放臭屁是什么原因| 角膜炎用什么药| mt是什么| 男生为什么要割包皮| 大咖什么意思| 什么动物吃猫| 唔该是什么意思| 预谋是什么意思| 制服是什么意思| 冬阴功汤是什么味道| 玉字五行属什么| 榆木脑袋是什么意思| 蛇七寸是什么部位| 红豆是什么意思| 对视是什么意思| 悟性是什么意思| 胃热吃什么药最有效| 赫是什么意思| 香砂六君丸治什么病| 丙烯颜料用什么洗掉| 儿童发烧挂什么科| 孕妇尿酸高是什么原因| 为什么老是掉头发| 炖牛肉放什么调料| pde是什么意思| 唾液有臭味是什么原因| 暗财是什么意思| 小孩血压低是什么原因| 做梦掉牙齿是什么意思| 为什么吃肉多反而瘦了| 左下腹疼挂什么科| 为什么耳屎是湿的| 阿碧的居所叫什么名字| 什么是聚酯纤维面料| 舂米是什么意思| 女生什么时候绝经| 1970年属狗的是什么命| 宫颈潴留囊肿是什么意思| 茶毫是什么| 什么蚌相争| 三只手是什么意思| 草木皆兵的意思是什么| 侏儒是什么意思| 沉冤得雪是什么意思| 耳朵烫是什么预兆| 易举易泄是什么原因| 清道夫鱼为什么不能吃| 肛门痒是什么原因男性| eee是什么牌子的鞋| 缺钙会导致什么| 的确什么意思| 淋巴细胞计数偏高是什么原因| 一动就大汗淋漓是什么原因| 月经期间适合吃什么食物| 蜂蜜跟什么不能一起吃| 尖锐湿疣的症状是什么| 血小板减少会出现什么症状| vape是什么意思| 溥仪为什么没有后代| 男女更年期分别在什么年龄| 闲鱼卖出的东西钱什么时候到账| 烫伤后擦什么药好得快| 怀孕有什么反应| 开背是什么意思| 什么是跑马| 灵长类动物是指什么| 怂包是什么意思| 叹服是什么意思| 第二视角是什么意思| 乙肝e抗体阳性是什么意思| 否是什么意思| 什么的枝叶| 男人梦见鱼是什么征兆| 手指甲有竖纹什么原因| 12月25日是什么日子| 打瓜是什么瓜| 心肌酶高有什么危害| 白细胞酯酶是什么意思| 私处为什么会发黑| 钻牛角尖是什么意思| 结节灶是什么意思啊| 液体套是什么| 印度神油是什么东西| 李晨的爷爷叫什么| 冰火两重天什么意思| 女人喝黄芪有什么好处| dpn是什么意思| 浪荡闲游是什么生肖| 无菌敷贴是干什么用的| 检查肺部应该挂什么科| 右乳钙化灶是什么意思| 为什么不能空腹吃香蕉| 爬山膝盖疼是什么原因| 肚脐左侧按压疼是什么原因| 体毛旺盛是什么原因| 血小板低会引发什么病| 潘粤明老婆现任叫什么| 真心是什么意思| 异什么意思| 贫血三项是指什么检查| 无情是什么意思| 电脑长期不关机有什么影响| 千什么万| 木鱼花是什么做的| 拔智齿后吃什么| 导火索是什么意思| 老打喷嚏是什么原因| 子时右眼跳是什么预兆| 孕晚期羊水多了对宝宝有什么影响| 孔雀开屏是什么行为| 总恶心是什么病的前兆| 阉割是什么意思| 心脏不好吃什么水果好| 梦见别人过生日是什么意思| 为什么叫香港脚| 百度Jump to content

【每日科技】商界大佬金句频出 微信内测黄金红包

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
百度 华尔街日报称,这是已知的首例无人驾驶致使行人死亡的事故。

Modules in C++ are a feature added in C++20 implementing modular programming as a modern alternative to precompiled headers.[1] A module in C++ comprises a single translation unit.[2] Like header files and implementation files, a module can contain declarations and definitions, but differ from precompiled headers in that they do not require the preprocessor directive #include, but rather are accessed using the word import. A module must be declared using the word module to indicate that the translation unit is a module.[1] A module, once compiled, is stored as a .pcm (precompiled module) file which acts very similar to a .pch (precompiled header) file.[3]

Modules most commonly have the extension .cppm (primarily common within Clang and GCC toolchains), though some alternative extensions include .ixx and .mxx (more common in Microsoft/MSVC toolchains).[4]

Though the standard C language does not have modules, dialects of C allow for modules, such as Clang C.[5] However, the syntax and semantics of Clang C modules differ from C++ modules significantly.

History

Prior to the conception of modules, C++ relied on the system of headers and source files. Precompiled headers existed and were similar to modules as snapshots of translation units easier to parse by the compiler and thus providing faster compilation[6], but did not have the same laws of encapsulation as modules. Modules were first proposed in 2012 for inclusion to C++14[7], but underwent extensive revisions and an entire redesign until the modern form was merged into C++20.[8]

Main uses

Modules provide the benefits of precompiled headers of faster compilation than #included traditional headers, as well as and faster processing during the linking phase.[9][10] This is because modules are not handled by the C preprocessor during the preprocessing step, but rather directly by the compiler during compilation.[11] Modules also reduce boilerplate by allowing code to be implemented in a single file, rather than being separated across a header file and source implementation, although separation of "interface file" and "implementation file" is still possible with modules, though modules provide a cleaner encapsulation of code.[2] Modules eliminate the necessity of #include guards or #pragma once, as modules do not directly modify the source code. Modules, unlike headers, do not have to be processed or recompiled multiple times.[9] However, similar to headers, any change in a module necessitates the recompilation of not only the module itself but also all its dependencies, and the dependencies of those dependencies, et cetera. Like headers, modules do not permit circular dependencies, and will not compile.[12]

A module is imported using the keyword import followed by a module name[a], while a module is declared with export module followed by the name. All symbols within a module meant to be exposed publicly are marked export, and importing the module exposes all exported symbols to the translation unit. If a module is never imported, it will never be linked.[13] Modules can export named symbols, but not macros which are consumed before compilation.[14]

Unlike header inclusions, the order of import statements do not matter.[9] A module can allow for transitive imports by marking an import with export import, which re-exports the imported module to a translation unit that imports the first module.[1] Modules do not enforce any notion of namespaces, though by convention, modules should match namespaces and source file paths (for example, a namespace like com::acme::project::util::ConfigLoader being tied to the module com.acme.project.util.ConfigLoader being in com/acme/project/util/ConfigLoader.cppm, similar to Java convention).[1] using statements will only be applied in translation units if explicitly marked export, making it much less likely that using a using statement to bring symbols into the global namespace will cause name clashes across module translation units. This resolves pollution of using statements in headers, which due to textual inclusion of the header by an #include directive, will always result in using statements adding symbols into scope, even if unintentional.

Standard library modules

Since C++23, the C++ standard library has been exported as a module as well, though as of currently it must be imported in its entirety (using import std;).[15] The C++ standards offer two standard library modules:

Name Description
std Exports all declarations in namespace std and global storage allocation and deallocation functions that are provided by the importable C++ library headers including C library facilities (although declared in standard namespace).
std.compat Exports the same declarations as the named module std, and additionally exports functions in global namespace in C library facilities. It thus contains "compat" in the name, meaning compatibility with C.

The module names std and std.* are reserved by the C++ standard, and thus declaring a module whose name matches either pattern will issue a compiler warning.[16] However, most compilers provide a flag to bypass or suppress that warning (for example -Wno-reserved-module-identifier in Clang and GCC).[3]

Tooling support

Currently, only GCC, Clang, and MSVC offer support for modules and import std;.[17] The Clangd language server supports modules.

Build system support varies. CMake, MSBuild, XMake, Meson, and Build2 provide full support for modules. Generated build systems such as Make and Ninja also have support for modules. However, Gradle for C++ and Bazel do not yet support modules.[18]

Example

A simple example of using modules is as follows:

MyClass.cppm

export module acme.project.MyClass;

import std;

export namespace acme::project {

class MyClass {
private:
    int x;
    std::string name;
public:
    MyClass(int x, const std::string& name):
        x{x}, name{name} {}

    [[nodiscard]]
    int getX() const noexcept {
        return x;
    }

    void setX(int newX) noexcept {
        x = newX;
    };

    [[nodiscard]]
    std::string getName() const noexcept {
        return name;
    }

    void setName(const std::string& newName) noexcept {
        name = newName;
    }
};

}

Main.cpp

import std;

import acme.project.MyClass;

using acme::project::MyClass;

int main(int argc, char* argv[]) {
    MyClass me(10, "MyName");
    me.setX(15);
    std::println("Hello, {0}! {0} contains value {1}.", me.getName(), me.getX());
}

Header units

Headers may also be imported using import, even if they are not declared as modules. Imported headers are called "header units", and are designed to allow existing codebases to migrate from headers to modules more gradually.[19][20] The syntax is similar to including a header, with the difference being that #include is replaced with import. As import statements are not preprocessor directives but rather statements of the language read by the compiler[11], they must be terminated by a semicolon. Header units automatically export all symbols, and differ from proper modules in that they allow the emittance of macros, meaning all translation units that import the header unit will obtain its contained macros. This offers minimal breakage between migration to modules.[9] The semantics of searching for the file depending on whether quotation marks or angle brackets are used apply here as well. For instance, one may write import <string>; to import the <string> header, or import "MyHeader.h"; to import the file "MyHeader.h" as a header unit.[1] Most build systems, such as CMake, do not support this feature yet.[21]

Anatomy

Module partitions and hierarchy

Modules may have partitions, which separate the implementation of the module across several files.[1] Module partitions are declared using the syntax A:B, meaning the module A has the partition B. Module partitions cannot individually be imported outside of the module that owns the partition itself, meaning that any translation unit that requires code located in a module partition must import the entire module that owns the partition.[1]

The module partition B is linked back to the owning module A with the statement import :B; in the file containing the declaration of module A or any other module partition of A (say A:C), which implicitly resolves :B to A:B, because the module is named A.[3] These import statements may themselves be exported by the owning module, even if the partition itself cannot be imported directly, and thus importing code from a partition is done by just importing the entire module.[1]

Other than partitions, modules do not have a hierarchical system or "submodules", but typically use a hierarchical naming convention, similar to Java's packages[b]. Only alphanumeric characters and the period and underscore may appear in the name of a module.[22] In C++, the name of a module is not tied to the name of its file or the module's location, unlike in Java[23], and the package it belongs to must match the path it is located in.[24] For example, the modules A and A.B in theory are disjoint modules and need not necessarily have any relation, however such a naming scheme is often employed to suggest that the module A.B is related or otherwise associated with the module A.[1]

The naming scheme of a C++ module is inherently hierarchical, and the C++ standard recommends re-exporting "sub-modules" belonging to the same public API (i.e. module alpha.beta.gamma should be re-exported by alpha.beta, etc.), even though dots in module names do not enforce any hierarchy. The C++ standard recommends lower-case ASCII module names (without hyphens or underscores), even though there is technically no restriction in such names.[25] Also, because modules cannot be re-aliased or renamed (short of re-exporting all symbols in another module), module names can be prefixed with organisation and project names for both clarity and to prevent naming clashes (i.e. google.abseil instead of abseil).[25] Also, unlike Java, whose packages may typically include an additional top-level domain (TLD) in front to avoid namespace clashes, C++ modules need not have this convention (for example, it may be more common to see acme.project.myfunctionality.MyModule than com.acme.project.myfunctionality.MyModule, though both names are valid).

Module purview and global module fragment

In the above example, everything above the line export module acme.project.MyClass; in the file MyClass.cppm is referred to as what is "outside the module purview", meaning what is outside of the scope of the module.[1] Typically, all #includes are placed outside the module purview between the statement module; and the declaration of export module, like so:

module; // Optional; marks the beginning of the global module fragment (mandatory if an include directive is invoked above the export module declaration)

// Headers are included in outside the module purview, before the module is declared
#include <print>
#include "MyHeader.h"

export module acme.project.MyModule; // Mandatory; marks the beginning of the module preamble

// Imports of named modules and header units come after the module declaration
// Import statements are placed immediately after the module declaration and do not appear after any code or symbol declarations
// In non-module translation units, #include directives precede import statements
import std;
import <string>;
import acme.project.util.UtilitySymbols;
import "Foo.h";
import <thirdlib/features/Feature.h>;

// Code here...

module: private; // Optional; marks the beginning of the private module fragment

All code which does not belong to any module exists in the so-called "unnamed module" (also known as the global module fragment), and thus cannot be imported by any module.[1]

The file containing main() may declare a module, but typically it does not (as it is unusual to export main() as it is typically only used as an entry point to the program, and thus the file is usually a .cpp file and not a .cppm file). A program is ill-formed if it exports main() and doing so causes undefined behaviour[26], but will not necessarily be rejected by the compiler.

Private module fragment

A module may declare a "private module fragment" by writing module: private;, in which all declarations or definitions after the line are visible only from within the file and cannot be accessed by translation units that import that module.[3] Any module unit that contains a private module fragment must be the only module unit of its module.[1]

Third-party library support

As modules are a recent addition and compiler vendors were notably slow to develop module support, most third-party libraries are still offered only as headers. However, some popular libraries have added module support. These include fmt (a formatting and printing library), nlohmann.json (a JSON library), and various boost.* libraries from the Boost C++ libraries.[27]

Clang C modules

An unrelated, but similar feature are Clang C modules. Clang offers non-standard module support for C, however the semantics differ significantly from C++ modules. Clang C modules exist for essentially the same reason as C++ modules:[5]

  • To ensure translation units are compiled only once
  • To ensure translation units are included only once
  • To prevent leakage of unwanted macros
  • To ensure clear boundaries of a library (i.e. specify what headers belong to what library)
  • To explicitly control what symbols are exported

C modules instead use a file called module.modulemap to define modules. For instance, the C standard library module map may look something like:

module std [system] [extern_c] {
    module assert {
        textual header "assert.h"
        header "bits/assert-decls.h"
        export *
    }

    module complex {
        header "complex.h"
        export *
    }

    module ctype {
        header "ctype.h"
        export *
    }

    module errno {
        header "errno.h"
        header "sys/errno.h"
        export *
    }

    module fenv {
        header "fenv.h"
        export *
    }

    // ...more headers follow...
}

This allows for the importing of C libraries like so:

import std.io;

int main(int argc, char* argv[]) {
    if (argc > 1) {
        printf("Hello, %s!\n", argv[1]);
    } else {
        printf("Hello, world!\n");
    }
    return 0;
}

Clang C modules can also be used in C++, although this is less portable as these conflict with the existing module implementation in C++. For example, the std module shown earlier can be extended to C++ using a requires declaration:

module std {
     // C standard library...

     module vector {
         requires cplusplus
         header "vector"
     }

     module type_traits {
         requires cplusplus11
         header "type_traits"
     }

     // more headers...
}

See also

Notes

  1. ^ The import keyword in C++ differs in meaning than other languages. For instance, import in Java is actually analogous to using in C++ and not C++ import. In the former, an import simply aliases the type or de-qualifies a namespace, because Java loads .class files dynamically as necessary, thus making all types available simply by fully qualifying all namespaces (rather than having to explicitly declare accessible modules). However, in C++ modules are not automatically all linked, and thus they must be manually "imported" to be made accessible, as import indicates that the translation unit must access code in the imported module. Thus, it is probably more appropriate to compare import in C++ to mod in Rust, which "declares" or indicates to the compiler to find the module to link against.
  2. ^ It is more appropriate to compare packages in Java and modules in C++, rather than modules in Java and modules in C++. Modules in C++ and Java differ in meaning. In Java, a module (which is handled by the Java Platform Module System) is used to group several packages together, while in C++ a module is a translation unit, strictly speaking.

References

  1. ^ a b c d e f g h i j k l cppreference.com (2025). "Modules (since C++20)". cppreference.com. Retrieved 2025-08-05.
  2. ^ a b Szalay, R.; Porkoláb, Z. (2025). "Refactoring to Standard C++20 Modules". Journal of Software: Evolution and Process. 37 (e2736). doi:10.1002/smr.2736. hdl:10831/113355. Retrieved 2025-08-05.
  3. ^ a b c d "Standard C++ Modules". clang.llvm.org.
  4. ^ "Overview of modules in C++". Microsoft. 24 April 2023.
  5. ^ a b "Modules". clang.llvm.org.
  6. ^ "Creating Precompiled Header Files". MSDN. Microsoft. 2015. Archived from the original on 2025-08-05. Retrieved 2025-08-05.
  7. ^ Daveed Vandevoorde (2025-08-05). "N3347=12-0037: Modules in C++ (Revision 6)" (PDF). ISO/IEC JTC1/SC22/WG21. Retrieved 2025-08-05.
  8. ^ Richard Smith (2025-08-05). "P1103R3: Merging Modules" (PDF). ISO/IEC JTC1/SC22/WG21. Retrieved 2025-08-05.
  9. ^ a b c d "Compare header units, modules, and precompiled headers". Microsoft. 12 February 2022.
  10. ^ Paul Krill (2 June 2022). "C++ 23 to introduce module support". InfoWorld.
  11. ^ a b Michael Spencer (2025-08-05). "P3034R1: Module Declarations Shouldn't be Macros". ISO/IEC JTC1/SC22/WG21. Retrieved 2025-08-05.
  12. ^ ISO/IEC 14882:2020. Programming Languages – C++ (3rd ed.). International Organization for Standardization. §9.3, "Module interface units and import/export rules," and §16.3, "Module dependencies."
  13. ^ ISO/IEC 14882:2020. Programming Languages – C++ (3rd ed.). International Organization for Standardization. §9.3, "Module interface units and import/export rules," and §16.2, "Module import semantics."
  14. ^ Alisdair Meredith (2025-08-05). "DxxxxR0: Modules and Macros". ISO C++. Retrieved 2025-08-05.
  15. ^ "Standard library - Importing modules". cppreference.com.
  16. ^ cppreference.com (2025). "C++ Standard Library". cppreference.com. Retrieved 2025-08-05.
  17. ^ "Compiler support for C++20". cppreference.com.
  18. ^ "Are We Modules Yet?: Tools Support". arewemodulesyet.org. Elias Steurer.
  19. ^ "Walkthrough: Build and import header units in Microsoft Visual C++". Microsoft. 12 April 2022.
  20. ^ "Standard C++ Modules - Header Units". clang.llvm.org.
  21. ^ CppNow (2025-08-05). The Challenges of Implementing C++ Header Units: C++ Modules - Daniel Ruoso - CppNow 2023. YouTube. Retrieved 2025-08-05.
  22. ^ ISO/IEC 14882:2020. Programming Languages – C++ (3rd ed.). International Organization for Standardization. §9.2, "Module interface units and import/export rules."
  23. ^ "Creating a Package". docs.oracle.com.
  24. ^ "Managing Source and Class Files". docs.oracle.com.
  25. ^ a b "Naming guidelines for modules". isocpp.org.
  26. ^ ISO/IEC 14882:2020. Programming Languages – C++ (3rd ed.). International Organization for Standardization. §3.6.1. "Program execution: the main() function."
  27. ^ "Are We Modules Yet?". arewemodulesyet.org. Elias Steurer.
痛风是什么症状 牵牛花为什么叫牵牛花 天蝎和什么星座最配 剖腹产坐月子可以吃什么水果 腰酸背痛吃什么药
克拉是什么单位 6月份是什么季节 十八罗汉是什么意思 天蝎座和什么座最配对 1948年中国发生了什么
什么样的普洱茶才是好茶 法盲是什么意思 血糖高吃什么好 自强是什么意思 睡眠障碍挂什么科
什么水果对胃好 什么运动能长高 熟地黄是什么 经常叹气是什么原因 什么是海拔
区局长是什么级别hcv8jop6ns2r.cn 多多益善的意思是什么hcv7jop5ns3r.cn 6月25什么星座hcv9jop1ns9r.cn 狗不理是什么意思hcv8jop5ns8r.cn 磨豆腐是什么意思hcv7jop4ns7r.cn
什么才叫幸福hcv8jop5ns8r.cn 长方形脸适合什么发型hcv7jop4ns8r.cn 尼泊尔人是什么人种hcv8jop5ns4r.cn black什么颜色hanqikai.com 九月十三号是什么星座hcv8jop3ns4r.cn
吴亦凡属什么hcv9jop4ns8r.cn 牙龈无缘无故出血是什么原因aiwuzhiyu.com 左肾积水是什么意思hcv8jop4ns0r.cn 老人脚浮肿是什么原因引起的hcv8jop7ns7r.cn 牙疼吃什么水果好hcv8jop8ns3r.cn
繁什么似锦hcv8jop4ns8r.cn 字读什么chuanglingweilai.com 高碎是什么茶hcv8jop5ns7r.cn chris是什么意思gysmod.com 左腹部疼是什么原因hcv9jop6ns5r.cn
百度