Привет!
Thu Jun 15 2006 05:02, Vladimir Vassilevsky wrote to Michael Zaichenko:
VV> Мне бы ваши проблемы. VV> Вот кусок линкерного файла. Догадайтесь, что здесь для чего. VV> И в таком же духе еще примерно 15 килобайт. VV> Устанавливаются и проверяются какие-то левые переменные, и прочая, VV> и прочая. Единственное, что мне нравится - это фирменное расширение VV> файлов *.dlb VV> #ifdef __WORKAROUNDS_ENABLED VV> #ifdef __ADI_LIBEH__ VV> #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, VV> libcpp532yx.dlb, libcpprt532yx.dlb, FPLIBS, libetsi532.dlb, VV> libssl532y.dlb, libdrv532y.dlb, OMEGA VV> #else VV> #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, VV> libcpp532y.dlb, libcpprt532y.dlb, FPLIBS, libetsi532.dlb, libssl532y.dlb, VV> libdrv532y.dlb, OMEGA VV> #endif VV> #else VV> #ifdef __ADI_LIBEH__ VV> #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, VV> libcpp532x.dlb, libcpprt532x.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, VV> libdrv532.dlb, OMEGA VV> #else VV> #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, VV> libcpp532.dlb, libcpprt532.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, VV> libdrv532.dlb, OMEGA VV> #endif /* } */ VV> #endif /* } */ VV> #if defined(USE_FILEIO) || defined(USE_PROFGUIDE) VV> #ifdef __WORKAROUNDS_ENABLED /* { */ VV> $LIBRARIES = LIBS, librt_fileio532y.dlb; VV> #else VV> $LIBRARIES = LIBS, librt_fileio532.dlb; VV> #endif /* } */ VV> #else VV> #ifdef __WORKAROUNDS_ENABLED /* { */ VV> $LIBRARIES = LIBS, librt532y.dlb; VV> #else VV> $LIBRARIES = LIBS, librt532.dlb; VV> #endif /* } */ VV> #endif /* } */
А я попробовал просто отступы сделать. Читаемость сразу же повысилась и сразу стало понятно, что делает приведенный тобою кусок кода:
#ifdef __WORKAROUNDS_ENABLED #ifdef __ADI_LIBEH__ #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, libcpp532yx.dlb, libcpprt532yx.dlb, FPLIBS, libetsi532.dlb, libssl532y.dlb, libdrv532y.dlb, OMEGA #else #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, libcpp532y.dlb, libcpprt532y.dlb, FPLIBS, libetsi532.dlb, libssl532y.dlb, libdrv532y.dlb, OMEGA #endif #else #ifdef __ADI_LIBEH__ #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, libcpp532x.dlb, libcpprt532x.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, libdrv532.dlb, OMEGA #else #define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, libcpp532.dlb, libcpprt532.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, libdrv532.dlb, OMEGA #endif /* } */ #endif /* } */
#if defined(USE_FILEIO) || defined(USE_PROFGUIDE) #ifdef __WORKAROUNDS_ENABLED /* { */ $LIBRARIES = LIBS, librt_fileio532y.dlb; #else $LIBRARIES = LIBS, librt_fileio532.dlb; #endif /* } */ #else #ifdef __WORKAROUNDS_ENABLED /* { */ $LIBRARIES = LIBS, librt532y.dlb; #else $LIBRARIES = LIBS, librt532.dlb; #endif /* } */ #endif /* } */
Т.е. просто напросто подключает нужные библиотеки в зависимости от понятных условий. А если еще один/другой комментарий вставить - вообще красота получится! :-)
Юргис