Данная константа позволяет Вам определить как компонуется MFC DLL статически или динамически. Давайте установим статическую компоновку.
И запустим нашу программу:
// atest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "afxwin.h" #include "iostream.h" void main() { #if defined _AFXDLL cout << "dinamic" << endl; #else cout << "static" << endl; #endif }
Результат будет таким:
static Press any key to continue
Переключимся на dinamic:
И запустим опять:
dinamic Press any key to continue
Вы спросите есть ли разница для программиста. Есть как ни странно. Вот такой код можно увидеть в DLL:
#ifndef _AFXDLL AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif
При создании DLL просто или расширений MFC необходимо по разному строить программный код. Но и в EXE при инициализации, допустим библиотеки CTL3D32.DLL, она разная в зависимости от того, как используется MFC:
#ifdef _AFXDLL Enable3dControls( ); #else Enable3dControlsStatic( ); #endif