Aracılığıyla paylaş


Öğretici: Komut satırından modülleri kullanarak C++ standart kitaplığını içeri aktarma

C++ kitaplık modüllerini kullanarak C++ standart kitaplığını içeri aktarmayı öğrenin. Bu, daha hızlı derlemeyle sonuçlanır ve üst bilgi dosyalarını, üst bilgi birimlerini veya önceden derlenmiş üst bilgileri (PCH) kullanmaktan daha sağlamdır.

Bu öğreticide, aşağıdakiler hakkında bilgi edinin:

  • Standart kitaplığı komut satırından modül olarak içeri aktarma.
  • Modüllerin performans ve kullanılabilirlik avantajları.
  • İki standart kitaplık modülü std ve std.compat aralarındaki fark.

Önkoşullar

Bu öğretici için Visual Studio 2022 17.5 veya üzeri gerekir.

Standart kitaplık modüllerine giriş

Üst bilgi dosyaları, makro tanımlarına, bunları dahil ettiğiniz sıraya bağlı olarak değişebilen semantiklerden muzdariptir ve bunlar derlemeyi yavaşlatırlar. Modüller bu sorunları çözer.

Artık standart kitaplığı üst bilgi dosyaları yerine modül olarak içeri aktarmak mümkündür. Bu, üst bilgi dosyalarını veya üst bilgi birimlerini veya önceden derlenmiş üst bilgileri (PCH) dahil etmekten çok daha hızlı ve daha sağlamdır.

C++23 standart kitaplığı iki adlandırılmış modülü tanıtır: std ve std.compat:

  • stdgibi std::vectorC++ standart kitaplık ad alanında stdtanımlanan bildirimleri ve adları dışarı aktarır. Ayrıca ve gibi işlevler std::printf()sağlayan ve <cstdlib>gibi <cstdio> C sarmalayıcı üst bilgilerinin içeriğini dışarı aktarır. gibi ::printf()genel ad alanında tanımlanan C işlevleri dışarı aktarılamaz. Bu, gibi <cstdio>bir C sarmalayıcı üst bilgisinin C genel ad alanı sürümlerini getiren gibi stdio.hC üst bilgi dosyalarını da içerdiği durumu iyileştirir. İçeri aktarırsanız stdbu bir sorun değildir.
  • std.compatiçindeki std her şeyi dışarı aktarır ve C çalışma zamanı genel ad alanlarını ( ::fopen::size_t::strlen, ::printfvb.) ekler. Modülü, std.compat genel ad alanında birçok C çalışma zamanı işlevine/türüne başvuran kod temelleriyle çalışmayı kolaylaştırır.

Derleyici, veya import std.compat; kullandığınızda import std; standart kitaplığın tamamını içeri aktarır ve bunu tek bir üst bilgi dosyası getirmekten daha hızlı yapar. Standart kitaplığın tamamını (veya import std.compat) ile import std; birlikte getirmek, örneğin' den #include <vector>daha hızlıdır.

Adlandırılmış modüller makroları kullanıma sunmadığından, veya std.compatöğesini içeri aktardığınızda std , errno, offsetof, va_argve diğerleri gibi assertmakrolar kullanılamaz. Geçici çözümler için bkz . Modül adlı standart kitaplıkta dikkat edilmesi gerekenler .

C++ modülleri hakkında

Üst bilgi dosyaları, C++ içindeki kaynak dosyalar arasında bildirimlerin ve tanımların nasıl paylaşıldığıdır. Standart kitaplık modüllerinden önce, standart kitaplığın ihtiyacınız olan bölümünü gibi #include <vector>bir yönergeyle eklersiniz. Başlık dosyalarının semantiği, eklediğiniz sıraya veya belirli makroların tanımlanıp tanımlanmadığına bağlı olarak değişebileceğinden, üst bilgi dosyaları kırılgandır ve oluşturmak zordur. Ayrıca, bunları içeren her kaynak dosya tarafından yeniden işlenmeleri nedeniyle de derlemeyi yavaşlatırlar.

C++20, modüller olarak adlandırılan modern bir alternatifi tanıtır. C++23'te standart kitaplığı temsil eden adlandırılmış modülleri tanıtmak için modül desteğini büyük harfe çevirmeyi başardık.

Üst bilgi dosyaları gibi modüller de bildirimleri ve tanımları kaynak dosyalar arasında paylaşmanızı sağlar. Ancak üst bilgi dosyalarından farklı olarak, modüller kırılgan değildir ve makro tanımları veya bunları içeri aktardığınız sıradan dolayı anlamları değişmediğinden modüller daha kolay oluşturulur. Derleyici, modülleri dosyaları işleyenenden çok daha hızlı işleyebilir #include ve derleme zamanında daha az bellek kullanır. Adlandırılmış modüller makro tanımlarını veya özel uygulama ayrıntılarını kullanıma sunmaz.

Modüller hakkında ayrıntılı bilgi için bkz . C++ 'da modüllere genel bakış Bu makalede C++ standart kitaplığının modül olarak kullanılması da ele alınmaktadır, ancak bunu yapmanın daha eski ve deneysel bir yolunu kullanır.

Bu makalede standart kitaplığı kullanmanın yeni ve en iyi yolu gösterilmektedir. Standart kitaplığı kullanmanın alternatif yolları hakkında daha fazla bilgi için bkz . Üst bilgi birimlerini, modülleri ve önceden derlenmiş üst bilgileri karşılaştırma.

Ile standart kitaplığı içeri aktarma std

Aşağıdaki örneklerde, komut satırı derleyicisini kullanarak standart kitaplığı modül olarak kullanma işlemi gösterilmektedir. Visual Studio IDE'de bunu yapma hakkında bilgi için bkz . ISO C++23 Standart Kitaplık Modülleri Oluşturma.

deyimi import std; veya import std.compat; standart kitaplığı uygulamanıza aktarır. Ancak önce modules adlı standart kitaplığı ikili biçimde derlemeniz gerekir. Aşağıdaki adımlar nasıl yapılacağını gösterir.

Örnek: Derleme ve içeri aktarma std

  1. VS için bir x86 Yerel Araçlar Komut İstemi açın: Windows Başlat menüsünden x86 native yazın ve istem uygulama listesinde görünmelidir. İstemin Visual Studio 2022 sürüm 17.5 veya üzeri olduğundan emin olun. İstemin yanlış sürümünü kullanırsanız hata alırsınız. Bu öğreticide kullanılan örnekler CMD kabuğuna yöneliktir.

  2. gibi %USERPROFILE%\source\repos\STLModulesbir dizin oluşturun ve bunu geçerli dizin yapın. Yazma erişiminiz olmayan bir dizin seçerseniz derleme sırasında hata alırsınız.

  3. std Adlandırılmış modülü aşağıdaki komutla derleyin:

    cl /std:c++latest /EHsc /nologo /W4 /c "%VCToolsInstallDir%\modules\std.ixx"
    

    Hata alırsanız komut isteminin doğru sürümünü kullandığınızdan emin olun.

    std Adlandırılmış modülü derlemek için, yerleşik modülü içeri aktaran kodla kullanmak istediğiniz derleyici ayarlarını kullanın. Çok projeli bir çözümünüz varsa, modül adlı standart kitaplığı bir kez derleyebilir ve ardından derleyici seçeneğini kullanarak tüm projelerinizden bu kitaplığa /reference başvurabilirsiniz.

    Derleyici, önceki derleyici komutunu kullanarak iki dosya çıkışı oluşturur:

    • std.ifc , derleyicinin deyimini işlemek için başvurduğu adlandırılmış modül arabiriminin derlenmiş ikili gösterimidir import std; . Bu yalnızca derleme zamanı yapıtıdır. Uygulamanızla birlikte gelmez.
    • std.obj adlandırılmış modülün uygulamasını içerir. Standart kitaplıktan kullandığınız işlevselliği statik olarak uygulamanıza bağlamak için örnek uygulamayı derlerken komut satırına ekleyin std.obj .

    Bu örnekteki anahtar komut satırı anahtarları şunlardır:

    Anahtar Anlamı
    /std:c++:latest C++ dil standardının ve kitaplığının en son sürümünü kullanın. altında /std:c++20modül desteği sağlansa da modules adlı standart kitaplık için destek almak için en son standart kitaplığa ihtiyacınız vardır.
    /EHsc olarak işaretlenen extern "C"işlevler dışında C++ özel durum işlemesini kullanın.
    /W4 Tüm düzey 1, düzey 2, düzey 3 ve olası sorunları erken yakalamanıza yardımcı olabilecek en düzey 4 (bilgilendirme) uyarılarını etkinleştirdiğinden, özellikle yeni projeler için /W4 kullanılması genellikle önerilir. Temelde mümkün olan en az sayıda bulunması zor kod hatasının sağlanmasına yardımcı olabilecek lint benzeri uyarılar sağlar.
    /c Bu noktada ikili adlı modül arabirimini oluşturacağımızdan bağlamadan derleyin.

    Nesne dosyası adını ve adlandırılmış modül arabirimi dosya adını aşağıdaki anahtarlarla denetleyebilirsiniz:

    • /Fo nesne dosyasının adını ayarlar. Örneğin, /Fo:"somethingelse". Varsayılan olarak, derleyici nesne dosyası için derlediğiniz modül kaynak dosyasıyla (.ixx) aynı adı kullanır. Örnekte, modül dosyasını derlediğimiz için nesne dosyası std.ixxvarsayılan olarak adıdırstd.obj.
    • /ifcOutput adlı modül arabirim dosyasının (.ifc) adını ayarlar. Örneğin, /ifcOutput "somethingelse.ifc". Varsayılan olarak, derleyici derlemekte olduğunuz modül kaynak dosyasıyla (.ifc) modül arabirim dosyası (.ixx) için aynı adı kullanır. Örnekte, modül dosyasını std.ifc derlediğimiz için oluşturulan ifc dosya std.ixxvarsayılan olarakdır.
  4. İlk olarak aşağıdaki içeriğe std sahip adlı importExample.cpp bir dosya oluşturarak oluşturduğunuz kitaplığı içeri aktarın:

    // requires /std:c++latest
    
    import std;
    
    int main()
    {
        std::cout << "Import the STL library for best performance\n";
        std::vector<int> v{5, 5, 5};
        for (const auto& e : v)
        {
            std::cout << e;
        }
    }
    

    Önceki kodda import std; ve #include <iostream>öğesinin yerini alır#include <vector>. deyimi import std; , tüm standart kitaplığı tek bir deyimle kullanılabilir hale getirir. Standart kitaplığın tamamını içeri aktarmak genellikle gibi #include <vector>tek bir standart kitaplık üst bilgisi dosyasını işlemekten çok daha hızlıdır.

  5. Önceki adımla aynı dizinde aşağıdaki komutu kullanarak örneği derleyin:

    cl /c /std:c++latest /EHsc /nologo /W4 /reference "std=std.ifc" importExample.cpp
    link importExample.obj std.obj
    

    Derleyici, deyimi tarafından import belirtilen modül adıyla eşleşen dosyayı otomatik olarak aradığından.ifc, bu örnekteki komut satırında belirtmek /reference "std=std.ifc" gerekmez. Derleyici karşılaştığında import std; , kaynak kodla aynı dizinde bulunp bulunmadiğini bulabilir std.ifc . .ifc Dosya kaynak koddan farklı bir dizindeyse, buna başvurmak için derleyici anahtarını kullanın/reference.

    Bu örnekte, kaynak kodu derlemek ve modülün uygulamasını uygulamaya bağlamak ayrı adımlardır. Olmak zorunda değiller. Bir adımda derlemek ve bağlamak için kullanabilirsiniz cl /std:c++latest /EHsc /nologo /W4 /reference "std=std.ifc" importExample.cpp std.obj . Ancak ayrı ayrı derlemek ve bağlamak kullanışlı olabilir çünkü o zaman modül adlı standart kitaplığı yalnızca bir kez oluşturmanız gerekir ve ardından derlemenizin bağlantı adımında bu kitaplığa projenizden veya birden çok projeden başvurabilirsiniz.

    Tek bir proje oluşturuyorsanız, komut satırına ekleyerek "%VCToolsInstallDir%\modules\std.ixx" module adlı standart kitaplığı oluşturma adımlarını std ve uygulamanızı oluşturma adımını birleştirebilirsiniz. Modülü kullanan std tüm .cpp dosyaların önüne koyun.

    Varsayılan olarak, çıktı yürütülebilir dosyasının adı ilk giriş dosyasından alınır. /Fe İstediğiniz yürütülebilir dosya adını belirtmek için derleyici seçeneğini kullanın. Bu öğretici, adlandırılmış modülü ayrı bir adım olarak derlemeyi std gösterir çünkü modül adlı standart kitaplığı yalnızca bir kez oluşturmanız gerekir ve ardından projenizden veya birden çok projeden başvurabilirsiniz. Ancak bu komut satırında gösterildiği gibi her şeyi birlikte oluşturmak kullanışlı olabilir:

    cl /FeimportExample /std:c++latest /EHsc /nologo /W4 "%VCToolsInstallDir%\modules\std.ixx" importExample.cpp
    

    Önceki komut satırı göz önüne alındığında, derleyici adlı importExample.exebir yürütülebilir dosya oluşturur. Çalıştırdığınızda aşağıdaki çıkışı oluşturur:

    Import the STL library for best performance
    555
    

ile standart kitaplığı ve genel C işlevlerini içeri aktarma std.compat

C++ standart kitaplığı ISO C standart kitaplığını içerir. Modülstd.compat, modülün , , std::cout, std::printfve std::scanfbenzeri gibi std::vectortüm işlevlerini std sağlar. Ancak, bu işlevlerin , , ::scanf, ::fopen::size_tve benzeri ::printfgenel ad alanı sürümlerini de sağlar.

Adlandırılmış std.compat modül, genel ad alanında C çalışma zamanı işlevlerine başvuran mevcut kodu geçirmeyi kolaylaştırmak için sağlanan bir uyumluluk katmanıdır. Genel ad alanına ad eklemekten kaçınmak istiyorsanız kullanın import std;. Birçok nitelenmemiş (genel ad alanı) C çalışma zamanı işlevi kullanan bir kod tabanını geçirmeyi kolaylaştırmanız gerekiyorsa kullanın import std.compat;. Bu, tüm genel adları ile std::nitelemeniz gerekmeyecek şekilde genel ad alanı C çalışma zamanı adlarını sağlar. Genel ad alanı C çalışma zamanı işlevlerini kullanan mevcut bir kodunuz yoksa kullanmanız import std.compat;gerekmez. Kodunuzda yalnızca birkaç C çalışma zamanı işlevi çağırırsanız, ile std::ihtiyacı olan birkaç genel ad alanı C çalışma zamanı adını kullanmak import std; ve nitelemek daha iyi olabilir. Örneğin, std::printf(). Kodunuzu derlemeye çalıştığınızda olduğu gibi error C3861: 'printf': identifier not found bir hata görürseniz genel ad alanı C çalışma zamanı işlevlerini içeri aktarmak için kullanmayı import std.compat; göz önünde bulundurun.

Örnek: Derleme ve içeri aktarma std.compat

Kullanabilmeniz import std.compat; için önce içindeki kaynak kod formunda std.compat.ixxbulunan modül arabirimi dosyasını derlemeniz gerekir. Visual Studio, projenizle eşleşen derleyici ayarlarını kullanarak modülü derleyebileceğiniz modülün kaynak kodunu iletir. Adımlar, adlandırılmış modülü oluşturmaya std benzer. Adlandırılmış std modül, buna bağlı olduğundan std.compat önce oluşturulur:

  1. VS için Yerel Araçlar Komut İstemi açın: Windows Başlat menüsünden x86 native yazın ve istem uygulama listesinde görünmelidir. İstemin Visual Studio 2022 sürüm 17.5 veya üzeri olduğundan emin olun. İstemin yanlış sürümünü kullanırsanız derleyici hataları alırsınız.

  2. Gibi bu örneği %USERPROFILE%\source\repos\STLModulesdenemek için bir dizin oluşturun ve bunu geçerli dizin yapın. Yazma erişiminiz olmayan bir dizin seçerseniz hata alırsınız.

  3. std ve std.compat adlandırılmış modüllerini aşağıdaki komutla derleyin:

    cl /std:c++latest /EHsc /nologo /W4 /c "%VCToolsInstallDir%\modules\std.ixx" "%VCToolsInstallDir%\modules\std.compat.ixx"
    

    Bunları içeri aktaracak kodla kullanmak istediğiniz derleyici ayarlarını derleyip std std.compat kullanmanız gerekir. Çok projeli bir çözümünüz varsa, bunları bir kez derleyebilir ve sonra derleyici seçeneğini kullanarak /reference tüm projelerinizden bunlara başvurabilirsiniz.

    Hata alırsanız komut isteminin doğru sürümünü kullandığınızdan emin olun.

    Derleyici, önceki iki adımda dört dosya çıkışı oluşturur:

    • std.ifc , derleyicinin deyimini işlemek için başvurduğu, derlenmiş ikili adlı modül arabirimidir import std; . Derleyici ayrıca üzerinde derlendiği std.ifc için işlemeye std.compat import std.compat; de başvururstd. Bu yalnızca derleme zamanı yapıtıdır. Uygulamanızla birlikte gelmez.
    • std.obj standart kitaplığın uygulamasını içerir.
    • std.compat.ifc , derleyicinin deyimini işlemek için başvurduğu, derlenmiş ikili adlı modül arabirimidir import std.compat; . Bu yalnızca derleme zamanı yapıtıdır. Uygulamanızla birlikte gelmez.
    • std.compat.obj uygulama içerir. Ancak, uygulamanın çoğu tarafından std.objsağlanır. Standart kitaplıktan kullandığınız işlevselliği statik olarak uygulamanıza bağlamak için örnek uygulamayı derlerken komut satırına ekleyin std.obj .

    Nesne dosyası adını ve adlandırılmış modül arabirimi dosya adını aşağıdaki anahtarlarla denetleyebilirsiniz:

    • /Fo nesne dosyasının adını ayarlar. Örneğin, /Fo:"somethingelse". Varsayılan olarak, derleyici nesne dosyası için derlediğiniz modül kaynak dosyasıyla (.ixx) aynı adı kullanır. Örnekte, ve modül dosyalarını derlediğimiz için nesne dosyası adları varsayılan olarak ve std.compat.objşeklindedir std.obj std.compat.obj.std.ixx
    • /ifcOutput adlı modül arabirim dosyasının (.ifc) adını ayarlar. Örneğin, /ifcOutput "somethingelse.ifc". Varsayılan olarak, derleyici derlemekte olduğunuz modül kaynak dosyasıyla (.ifc) modül arabirim dosyası (.ixx) için aynı adı kullanır. Örnekte, ve modül dosyalarını derlediğimiz için oluşturulan ifc dosyalar varsayılan olarak ve std.compat.ixxşeklindedir std.ifc std.compat.ifc.std.ixx
  4. Önce aşağıdaki içeriğe std.compat sahip adlı stdCompatExample.cpp bir dosya oluşturarak kitaplığı içeri aktarın:

    import std.compat;
    
    int main()
    {
        printf("Import std.compat to get global names like printf()\n");
    
        std::vector<int> v{5, 5, 5};
        for (const auto& e : v)
        {
            printf("%i", e);
        }
    }
    

    Önceki kodda import std.compat; ve #include <vector>öğesinin yerini alır#include <cstdio>. deyimi import std.compat; , standart kitaplığı ve C çalışma zamanı işlevlerini tek bir deyimle kullanılabilir hale getirir. C++ standart kitaplığını ve C çalışma zamanı kitaplığı genel ad alanı işlevlerini içeren bu adlandırılmış modülü içeri aktarmak, gibi #include <vector>tek #include bir modülü işlemekten daha hızlıdır.

  5. Aşağıdaki komutu kullanarak örneği derleyin:

    cl /std:c++latest /EHsc /nologo /W4 stdCompatExample.cpp
    link stdCompatExample.obj std.obj std.compat.obj
    

    Derleyici bir deyimdeki modül adıyla import eşleşen dosyayı otomatik olarak aradığından .ifc komut satırında belirtmemiz std.compat.ifc gerekmedi. Derleyici, kaynak kodla aynı dizine yerleştirdiğimiz için bu sorunla karşılaştığında import std.compat; std.compat.ifc , bunu komut satırında belirtme gereksinimini gideriyor. .ifc Dosya kaynak koddan farklı bir dizindeyse veya farklı bir ada sahipse, buna başvurmak için derleyici anahtarını kullanın/reference.

    İçeri aktarırkenstd.compat, hem hem de std.compat std.obj içinde std.objkod kullandığından std.compat bağlantı oluşturmanız gerekir.

    Tek bir proje oluşturuyorsanız, komut satırına ve std.compat (bu sırayla) ekleyerek "%VCToolsInstallDir%\modules\std.ixx" ve "%VCToolsInstallDir%\modules\std.compat.ixx" adlı modüller adlı standart kitaplığı oluşturma adımlarını std birleştirebilirsiniz. Bu öğretici, standart kitaplık modüllerini ayrı bir adım olarak oluşturmayı gösterir çünkü modüller adlı standart kitaplığı yalnızca bir kez oluşturmanız gerekir ve sonra bunlara projenizden veya birden çok projeden başvurabilirsiniz. Ancak hepsini bir kerede oluşturmak uygunsa, bunları kullanan dosyaların .cpp önüne koyduğundan emin olun ve bu örnekte gösterildiği gibi yerleşik exe olarak adlandırmayı belirtin/Fe:

    cl /c /FestdCompatExample /std:c++latest /EHsc /nologo /W4 "%VCToolsInstallDir%\modules\std.ixx" "%VCToolsInstallDir%\modules\std.compat.ixx" stdCompatExample.cpp
    link stdCompatExample.obj std.obj std.compat.obj
    

    Bu örnekte, kaynak kodu derlemek ve modülün uygulamasını uygulamanıza bağlamak ayrı adımlardır. Olmak zorunda değiller. Bir adımda derlemek ve bağlamak için kullanabilirsiniz cl /std:c++latest /EHsc /nologo /W4 stdCompatExample.cpp std.obj std.compat.obj . Ancak ayrı ayrı derlemek ve bağlamak kullanışlı olabilir çünkü o zaman modüller adlı standart kitaplığı yalnızca bir kez oluşturmanız gerekir ve sonra derlemenizin bağlantı adımında bunları projenizden veya birden çok projeden başvurabilirsiniz.

    Önceki derleyici komutu adlı stdCompatExample.exebir yürütülebilir dosya oluşturur. Çalıştırdığınızda aşağıdaki çıkışı oluşturur:

    Import std.compat to get global names like printf()
    555
    

Modül adlı standart kitaplıkta dikkat edilmesi gerekenler

Adlandırılmış modüller için sürüm oluşturma, üst bilgilerle aynıdır. Adlandırılmış .ixx modül dosyaları üst bilgilerle birlikte yüklenir, örneğin: "%VCToolsInstallDir%\modules\std.ixx, bu yazının yazıldığı sırada kullanılan araçların sürümünde çözümlenir C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\modules\std.ixx . Adlandırılmış modülün sürümünü, kullanmak istediğiniz üst bilgi dosyasının sürümünü seçtiğiniz gibi,başvurabileceğiniz dizine göre seçin.

üst bilgi birimlerini ve adlandırılmış modülleri içeri aktarmayı karıştırmayın ve eşleştirin. Örneğin, aynı dosyada ve'yi import std; yapmayınimport <vector>;.

C++ standart kitaplık üst bilgi dosyalarını ve adlandırılmış modülleri std veya std.compatiçeri aktarmayı karıştırmayın ve eşleştirin. Örneğin, aynı dosyada ve'yi import std; yapmayın#include <vector>. Ancak, C üst bilgilerini ekleyebilir ve adlandırılmış modülleri aynı dosyaya aktarabilirsiniz. Örneğin, aynı dosyada ve #include <math.h> yapabilirsinizimport std;. Yalnızca C++ standart kitaplık sürümünü <cmath>eklemeyin.

Bir modülü birden çok kez içeri aktarmaya karşı savunmanız gerekmez. Başka bir ifadeyle, modüllerde stil üst bilgi korumalarına ihtiyacınız #ifndef yoktur. Derleyici, adlandırılmış bir modülü ne zaman içeri aktardığını bilir ve yinelenen bunu yapma girişimlerini yoksayar.

Makroyu assert() kullanmanız gerekiyorsa, öğesini seçin #include <assert.h>.

Makroyu errno kullanmanız gerekiyorsa, #include <errno.h>. Adlandırılmış modüller makroları kullanıma sunmadığından, örneğin' den <math.h>hataları denetlemeniz gerekiyorsa bu geçici çözümdür.

, INFINITYve INT_MIN gibi NANmakrolar tarafından tanımlanır <limits.h>ve bu makroları ekleyebilirsiniz. Ancak ve yerine NAN ve numeric_limits<double>::infinity() INT_MININFINITYstd::numeric_limits<int>::min() yerine ve kullanabilirsiniz.import std; numeric_limits<double>::quiet_NaN()

Özet

Bu öğreticide, modülleri kullanarak standart kitaplığı içeri aktarmış olacaksınız. Ardından C++ dilindeki Adlandırılmış modüller öğreticisinde kendi modüllerinizi oluşturma ve içeri aktarma hakkında bilgi edinin.

Ayrıca bkz.

Üst bilgi birimlerini, modülleri ve önceden derlenmiş üst bilgileri karşılaştırma
C++ içindeki modüllere genel bakış
Visual Studio'da C++ Modülleri Turu
Projeyi Modules adlı C++ öğesine taşıma