Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++. Π‘Π±ΠΎΡ€Π½ΠΈΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 25

Автор Π”. БтСфСнс

hellobeatles: johnpaul georgeringo

Π’ Π±ΠΎΠ»Π΅Π΅ слоТном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ большоС количСство зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈ входящими Π² Π½Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ трСбуСтся ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° явно зависит.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΆΠ΅

Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ 1.5, 1.10 ΠΈ 1.13.

1.19. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ макроса

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ символ прСпроцСссора name, присвоив Π΅ΠΌΡƒ Π»ΠΈΠ±ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ value.

РСшСниС

ΠžΠΏΡ†ΠΈΠΈ компилятора для опрСдСлСния макросов Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ‚Π°Π±Π». 1.16. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ для опрСдСлСния макросов Π² IDE ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 1.17. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ макрос с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Boost.Build, просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² трСбования Ρ†Π΅Π»ΠΈ свойство Π²ΠΈΠ΄Π° <define>name[=value], ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π». 1.15 ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.12.


Π’Π°Π±Π». 1.16. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ макроса ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠžΠΏΡ†ΠΈΠΈ ВсС -Dname[-value]

Π’Π°Π±Π». 1.17. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ макроса ΠΈΠ· IDE

IDE ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Visual C++ На страницах свойств ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Configuration Propertiesβ†’C/C++β†’Preprocessor ΠΈ Π² Preprocessor Definitions (опрСдСлСния прСпроцСссора) Π²Π²Π΅Π΄ΠΈΡ‚Π΅ name[=value], для раздСлСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… записСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой CodeWarrior Π’ ΠΎΠΊΠ½Π΅ Target Settings ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Language Settingsβ†’C/C++ Preprocessor ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅: #define name[=value] Π² ΠΏΠΎΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Prefix Text C++Builder Π’ Project Options ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Directories/Conditionals ΠΈ Π² Preprocessor Definitions Π²Π²Π΅Π΄ΠΈΡ‚Π΅ name[=value], для раздСлСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… записСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой Dev-C++ Π’ Project Options Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Parameters ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅: -Dname[=value] Π² области C++ Compiler ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ прСпроцСссора часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ C++ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π½Π°Π±ΠΎΡ€ исходных Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ использован Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… конфигурациях сборки ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах. НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΡƒΡŽ, являСтся Π»ΠΈ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. БСйчас стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C++ Π½Π΅ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для выполнСния этой Π·Π°Π΄Π°Ρ‡ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, эта функция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, спСцифичныС для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΈ Π² Windows, ΠΈ Π² Unix, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ спСцифичныС для Windows Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌ для компилятора ΠΏΡ€ΠΈ компиляции ΠΏΠΎΠ΄ Unix, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом достиТСния этого эффСкта являСтся использованиС условной компиляции, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.25.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1.25. Условная компиляция с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… макросов

#ifdef _WIN32

# include <windows.h>

#else // He Windows - ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π² Unix

# include <sys/stat.h>

#endif


bool is_directory(const char* path) {

#ifdef _WIN32

 // рСализация для Windows

#else

 // рСализация для Unix

#endif

}

Π’ Windows всС Π½Π°Π±ΠΎΡ€Ρ‹ инструмСнтов, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ€Ρ‚Π° GCC Cygwin, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ макрос _WIN32. ΠœΠ°ΠΊΡ€ΠΎΡ, опрСдСляСмый автоматичСски, называСтся ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ макросом. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1.25 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ макрос WIN32 для опрСдСлСния, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΎΠ½ компилируСтся, ΠΈ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ спСцифичного для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠΎΠ΄Π°.

Однако часто настроСчная информация, нСобходимая для выполнСния ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° условной компиляции, Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… макросов нСдоступна. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнныС макросы ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π». 1.15, 1.16 ΠΈ 1.17, ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1.2. Π’ Windows ΠΏΡ€ΠΈ сборкС DLL georgeringo.dll функция georgeringo() Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ __declspec(dllexport), Π° Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях β€” с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ __declspec(dllimport). Как описано Π² Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π΅ 1.4, этого эффСкта ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС сборки DLL символ прСпроцСссора GEORGERINGO_DLL ΠΈ Π½Π΅ опрСдСляя Π΅Π³ΠΎ ΠΏΡ€ΠΈ компиляции ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ эту DLL.

Если Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ макроса, Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ Π΅ΠΌΡƒ пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ использовании макросов для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ условной компиляции, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.25, эта Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния. Однако, Ссли трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ макрос раскрывался ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ явно, использовав запись Π²ΠΈΠ΄Π° -D<name>=<value>.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΆΠ΅

Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ 1.4, 1.9, 1.12 ΠΈ 1.17.

1.20. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ· IDE

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ компилятору ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ ΠΎΠΏΡ†ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², доступных Π² IDE.

РСшСниС

МногиС IDE ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки нСпосрСдствСнно компилятору ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ. Π­Ρ‚ΠΈ способы ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 1.18 ΠΈ 1.19.


Π’Π°Π±Π». 1.18. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΉ компилятора ΠΈΠ· IDE

IDE ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Visual C++ На страницах свойств ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Configuration Propertiesβ†’Π‘/Π‘++β†’Command Line (командная строка) ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Π² ΠΏΠΎΠ»Π΅ Additional options (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ) CodeWarrior НСпримСнимо C++Builder НСпримСнимо Dev-C++ Π’ Project Options Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Parameters ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Π² ΠΏΠΎΠ»Π΅ C++ Compiler

Π’Π°Π±Π». 1.19. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΈΠ· IDE

IDE ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Visual C++ На страницах свойств ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Configuration Propertiesβ†’Linkerβ†’Command Line ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Π² ΠΏΠΎΠ»Π΅ Additions options Metrowerks НСпримСнимо C++Builder НСпримСнимо Dev-C++ Π’ Project Options Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Parameters ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ Π² ΠΏΠΎΠ»Π΅ Linker ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Visual C++ прСдоставляСт ΠΎΠΏΡ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ настройки Ρ‡Π΅Ρ€Π΅Π· свой графичСский интСрфСйс, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки явно. CodeWarrior ΠΈ C++Builder Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ явно ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Visual C++ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠΏΡ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ настройки Ρ‡Π΅Ρ€Π΅Π· свои графичСскиС интСрфСйсы. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ IDE ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ для настройки инструмСнтов ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самый ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ возмоТности явного Π²Π²ΠΎΠ΄Π° Π² тСкстовоС ΠΏΠΎΠ»Π΅ ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Dev-C++ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π΄Π΅-Ρ‚ΠΎ посСрСдинС: хотя Dev-C++ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ большС графичСских ΠΎΠΏΡ†ΠΈΠΉ настройки, Ρ‡Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ IDE, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с инструмСнтариСм GCC, ΠΏΡ€ΠΈ Π΅Π³ΠΎ использовании ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ввСсти ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

1.21. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ сборки

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

РСшСниС

Π’ основном для получСния ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ сборки трСбуСтся:

β€’ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ;

β€’ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ встраиваСмых (inline) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;

β€’ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’Π°Π±Π»ΠΈΡ†Π° 1.20 прСдставляСт ΠΎΠΏΡ†ΠΈΠΈ компилятора ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈ встраивания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Ρ‚Π°Π±Π». 1.21 прСдставляСт ΠΎΠΏΡ†ΠΈΠΈ компилятора ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.


Π’Π°Π±Π». 1.20. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈ встраивания ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ВстраиваниС GCC -O0 -fno-inlineΒΉ Visual C++ Intel (Windows) -Od -Ob0 Intel (Linux) -O0 -Ob0 -opt off -inline off Comeau (Unix) -O0 --no_inlining Comeau (Windows) To ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ основного компилятора, Π½ΠΎ вмСсто Ρ‚ΠΈΡ€Π΅ (-) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слСш (/) Borland -Od -vi- Digital Mars -o+none -S -C

ΒΉ Π­Ρ‚Ρƒ ΠΎΠΏΡ†ΠΈΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ трСбуСтся, Ссли Π½Π΅ Π±Ρ‹Π»Π° ΡƒΠΊΠ°Π·Π°Π½Π° опция -O3.