DCMTK: macros.txt file

DCMTK Version 3.7.0 OFFIS DICOM Toolkit

Loading...
Searching...
No Matches
macros.txt file

    ===================================
    DCMTK COMPILE TIME FLAGS AND MACROS
    ===================================

    The behavior of several DCMTK tools and libraries can be modified by a number
    of compile time flags (macros), which are explained below.
    Most of these macros enable experimental or rarely needed features in DCMTK,
    others disable certain functions.  So please, use with care!

    Note: CMake users simply need to add a new definition to CXXFLAGS, e.g.:

      CXXFLAGS=-DENABLE_DCMJPLS_INTERLEAVE_NONE && cmake [...] /path/to/dcmtk

    ALLOW_ILLUMINATION_OVERRIDE
      Affected: dcmprscu
      Type of modification: Activates experimental or rarely used feature
      Explanation: Allows the settings for Illumination and Reflected Ambient Light,
        which are stored in a Stored Print object, to be overridden from the print
        job command file.

    BUGGY_IMPLEMENTATION_CLASS_UID_PREFIX
      Affected: storescp
      Type of modification: Activates workaround for known bug in other product
      Explanation: The dcmnet module contains a workaround that allows to
        communicate with some buggy Storage SCUs.  If the global flag
        dcmPeerRequiresExactUIDCopy is enabled, an illegal space padding in the
        Affected SOP Instance UID field of the C-STORE-RQ message is retained in the
        corresponding C-STORE-RSP message.  When this preprocessor macro is defined,
        it should contain the prefix of an implementation class UID of an
        implementation known to exhibit the buggy behavior.  The workaround is then
        activated in storescp whenever a Storage SCU with the given implementation
        class UID root connects.

    DCMTK_BUILD_DATE
      Affected: dcmdata
      Type of modification: Toolkit customization
      Explanation: When this macro is defined (typically in config/Makefile.def),
        the given date is used instead of the official DCMTK release data.  This
        allows for example to specify the date of a current development snapshot.

    DCMTK_BUILD_IN_PROGRESS
      Affected: all modules
      Type of modification: Toolkit customization
      Explanation: When building DLLs, exported symbols must be marked differently
        if the DLL itself is built or when the DLL shall be used.  This macro is
        defined when the DCMTK gets built and should not be defined when user code
        that just uses the DCMTK is built.  Based on this, the correct annotation
        gets selected and is used in the code.  There should be no valid reasons to
        define this macro yourself since this is done automatically by the build
        system.

    DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY
      Affected: dcmnet
      Type of modification: Toolkit customization
      Explanation: In DCMTK releases before 3.6.8, some tools incorrectly compare
        DataSetType for equality with DIMSE_DATASET_PRESENT, instead of checking
        whether DataSetType is different from DIMSE_DATASET_NULL.  These tools will
        fail if a different value than 0x0001 is used for this constant.  See DCMTK
        issue #1045.  The DICOM standard, on the other hand, recommends the value
        0x0102 if backwards compatibility with ACR-NEMA is desired.  If this is
        important, compile with this macro enabled.

    DCMTK_ENABLE_OUTDATED_DCMTK_WORKAROUND
      Affected: dcmnet
      Type of modification: Activates feature
      Explanation: If compiled with this macro, some workarounds for backwards
        compatibility with very old DCMTK releases dating back to 1994-95
        are re-enabled.

    DCMTK_ENABLE_ICONV_PASSTHROUGH
      Affected: oficonv
      Type of modification: Activates feature
      Explanation: If compiled with this macro, the oficonv library will simply
        copy input to output during a character set conversion if input and output
        encoding are the same.  This is more efficient, but means that invalid byte
        sequences in the source will remain undetected and copied to the target,
        whereas the default behavior would detect this and stop the conversion.  It
        is also incompatible with the behavior of the GNU iconv library.
        In DCMTK 3.6.8, this feature was always enabled.

    DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK
      Affected: dcmjpeg
      Type of modification: Activates feature
      Explanation: DCMTK releases up to 3.6.6 contained a relatively strict check
        for the validity of Huffman tables for DC components in the JPEG decoder.
        At least one JPEG implementation produces valid JPEG images that fail this
        test (see DCMTK issue #1018).  The test has, therefore, been disabled.  This
        macro re-enables the old behavior.

    DCMTK_GUI
      Affected: all modules
      Type of modification: Activates experimental or rarely used feature
      Explanation: When this macro is defined, DCMTK re-assigns the standard output
        and error streams maintained by ofConsole to string streams.  This will
        allow a GUI based application to extract the messages and either present
        them to the user or store them in a log file.  See comments in
        ofstd/include/dcmtk/ofstd/ofconsol.h.

    DCMTK_LOG4CPLUS_AVOID_WIN32_FLS
      Affected: oflog
      Type of modification: Disables feature
      Explanation: Starting with release 3.6.5, DCMTK uses fiber local storage
        instead of thread local storage in the oflog module on Windows to store
        thread-specific information.  This has the advantage that a callback can
        be (and is) registered that automatically cleans up the memory when a
        thread ends.  The old behavior can be re-activated with this macro.
        This may be necessary when an application wants to use multiple fibers
        within a single thread.  In that case, before ending a thread,
        dcmtk::log4cplus::threadCleanup() should be called by the user code in
        order to clean-up oflog's thread local storage.

    DCMTK_MERGE_STDERR_TO_STDOUT
      Affected: dcmdata
      Type of modification: Activates feature
      Explanation: DCMTK releases up to 3.6.6 redirected the stderr stream to stdout
        on Windows to make it easier to pipe the output of the command line tools to
        "more".  With the introduction of the ability to write DICOM files to
        stdout, this feature has been disabled as debug output will otherwise get
        mixed into the DICOM file.  The old behavior can be re-activated by
        compiling with this macro.  In this case, DICOM files should never be
        written to stdout as this will be unreliable.

    DCMTK_USE_OFLOG_LOGGER_IN_STUB
      Affected: ofstd
      Type of modification: Selects implementation variant
      Explanation: The command line application stub defined in ofstub.h that calls
        another command line tool and forwards the command line option by default
        prints error messages and warnings to stderr.  When compiling with this
        macro defined, the messages are printed to the oflog logger instead, which,
        however, increases the executable size and slows down execution a bit.

    DCMTK_USE_UNIX_SOCKET_QUEUE
      Affected: ofstd
      Type of modification: Selects implementation variant
      Explanation: The implementation of message queues for inter-process
        communication in DCMTK can either use Windows mailslots, Posix message
        queues, System V message queues, or a solution based on Unix Domain sockets
        and a separate thread that handles incoming connections in the message
        queue server.  When this macro is defined, the implementation based on Unix
        Domain sockets is preferred when possible (i.e. Unix Domain sockets and
        threads are available).  This macro can be used on platforms where the use
        of the other IPC mechanisms causes problems, e.g. because of platform
        specific limitations to the number of queues permitted system-wide.

    DICOMDIR_WITHOUT_BACKUP
      Affected: dcmdata
      Type of modification: Disables feature
      Explanation: By default, DCMTK creates a backup of an existing DICOMDIR
        (using the name DICOMDIR.$$$) when a DcmDicomDir object is written to file.
        The creation of the backup can be disabled with this macro.

    DISABLE_COMPRESSION_EXTENSION
      Affected: dcmqrdb
      Type of modification: Disables feature
      Explanation: Disables the support of compression (various transfer syntaxes)
        in dcmqrdb, a feature which is still experimental.

    DISABLE_FF_JPEG_BITSTREAM_PADDING
      Affected: dcmjpeg, dcmjpls (dcmjpls only up to DCMTK 3.6.4)
      Type of modification: Disables feature
      Explanation: Starting with release 3.6.2, DCMTK pads JPEG and JPEG-LS
        bitstreams that have odd length with an "extended" end of image (EOI)
        marker, writing "ff/ff/d9" instead of adding a zero byte after the EOI
        marker, i.e. writing "ff/d9/00".  The old behavior can be restored by
        defining this macro.
        In the dcmjpls module, the macro has been replaced by a codec parameter that
        can be set at runtime starting with DCMTK 3.6.5.

    DISABLE_NAGLE_ALGORITHM
      Affected: dcmnet
      Type of modification: Disables feature
      Explanation: By default, DCMTK does not disable the so-called Nagle algorithm,
        which allows for improving the efficiency of TCP/IP networks by reducing the
        number of packets that need to be sent over the network.  When compiled with
        this macro, the Nagle algorithm is disabled for each DICOM transport
        connection.  This was the default in earlier versions of the DCMTK but does
        not seem to be appropriate anymore for most modern operating systems.
        The default behavior can be changed by setting the environment variable
        TCP_NODELAY accordingly (see config/docs/envvars.txt or
        /usr/local/share/doc/dcmtk-<VERSION>/envvars.txt).

    DISABLE_PORT_PERMISSION_CHECK
      Affected: most/all network server tools
      Type of modification: Disables feature
      Explanation: By default, most network server tools (e.g. storescp) check for
        sufficient privileges to listen on the specified port (if geteuid() is
        available on the particular system).  For examples, on Unix systems
        listening on port < 1024 usually requires root privileges.  However, the
        port permission check might prevent the tool from being run on such ports on
        systems with fine-grained permission control (e.g. Linux).  Therefore, this
        check can be disabled using this flag.

    DISABLE_RECV_TIMEOUT
      This macro is not supported anymore since the timeout for the recv() function
      is now configurable at runtime.  See global variable dcmSocketReceiveTimeout.

    DISABLE_SEND_TIMEOUT
      This macro is not supported anymore since the timeout for the send() function
      is now configurable at runtime.  See global variable dcmSocketSendTimeout.

    DONT_DISABLE_NAGLE_ALGORITHM
      This macro is not supported anymore since the Nagle algorithm is no longer
      disabled by default.  See DISABLE_NAGLE_ALGORITHM for details.

    DOXYGEN
      Affected: everything
      Type of modification: Hides complexity from Doxygen
      Explanation: Doxygen is unable to parse some complex statements correctly and
        it is sometimes sufficient to provide documentation for the basic
        functionality instead of documenting every detail.
        This macro is defined when creating the documentation with Doxygen and
        should NEVER be defined when compiling DCMTK with a C/C++ compiler.
        NOTE: Doxygen is still unable to expand some macros correctly (e.g.
              HAVE_WINDOWS_H).  Using this macro at the appropriate locations could
              be a solution for this problem.

    DCM_DICT_DEFAULT
      Affected: dcmdata
      Type of modification: Activates feature
      Explanation: This macro controls which kind of default dictionary is loaded
        on startup.  Three settings are possible:
          0: Do not load any default dictionary on startup
          1: Load builtin dictionary on startup
          2: Load external (i.e. file-based) dictionary on startup
        See dcmtk/dcmdata/docs/datadict.txt for further details.

    DCM_DICT_USE_DCMDICTPATH
      Affected: dcmdata
      Type of modification: Activates feature
      Explanation: This macro controls whether DCMDICTPATH environment variable is
        evaluated on startup.  If so, any dictionary files provided through
        DCMDICTPATH will be loaded on startup.
        See dcmtk/dcmdata/docs/datadict.txt for further details.

    ENABLE_DCMJPLS_INTERLEAVE_NONE
      Affected: dcmjpls
      Type of modification: Enables feature
      Explanation: Re-enables the option for uninterleaved encoding
        (--interleave-none) in the JPEG-LS encoder on command line and library
        level.  This option was removed after DCMTK 3.6.5 since it may in certain
        cases (color image with BitsStored > 12) create compressed images that
        are correct but cannot be decoded by the JPEG-LS library due to a known
        bug (DCMTK issue #892).  The option will be re-enabled permanently once
        DCMTK has been ported to CharLS 2.x, another branch of the JPEG-LS library
        that requires a C++14 compiler, however.

    ENABLE_CSTDIO_BASED_ATOF_IMPLEMENTATION
      Affected: all modules
      Type of modification: Activates feature
      Explanation: The implementation of OFStandard::atof() by default uses
        iostreams on Posix platforms and cstdio on Windows, because on Windows
        this is much faster. This macro can be defined to enable the
        cstdio based implementation on all platforms. THIS IS STRONGLY
        DISCOURAGED because the cstdio based implementation suffers from a
        race condition that may occur if a different thread changes the
        locale while OFStandard::atof() is running. In this case, the result
        returned by OFStandard::atof() may be incorrect. The Windows version
        is NOT affected by this race condition because Windows offers a
        propietary version of sscanf where the locale can be passed
        explicitly. This macro is mutually exclusive with
        ENABLE_OLD_OFSTD_ATOF_IMPLEMENTATION and
        ENABLE_IOSTREAM_BASED_ATOF_IMPLEMENTATION.

    ENABLE_CSTDIO_BASED_FTOA_IMPLEMENTATION
      Affected: all modules
      Type of modification: Activates feature
      Explanation: The implementation of OFStandard::ftoa() by default uses
        iostreams on Posix platforms and cstdio on Windows, because on Windows
        this is much faster. This macro can be defined to enable the
        cstdio based implementation on all platforms. The implementation
        contains code that addresses changes to the locale, so this is
        not an issue in ftoa. This macro is mutually exclusive with
        ENABLE_OLD_OFSTD_FTOA_IMPLEMENTATION and
        ENABLE_IOSTREAM_BASED_FTOA_IMPLEMENTATION.

    ENABLE_IOSTREAM_BASED_ATOF_IMPLEMENTATION
      Affected: all modules
      Type of modification: Activates feature
      Explanation: The implementation of OFStandard::atof() by default uses
        iostreams on Posix platforms and cstdio on Windows, because on Windows
        this is much faster. This macro can be defined to enable the
        iostream based implementation on all platforms. This macro is mutually
        exclusive with ENABLE_OLD_OFSTD_ATOF_IMPLEMENTATION and
        ENABLE_CSTDIO_BASED_ATOF_IMPLEMENTATION.

    ENABLE_IOSTREAM_BASED_FTOA_IMPLEMENTATION
      Affected: all modules
      Type of modification: Activates feature
      Explanation: The implementation of OFStandard::ftoa() by default uses
        iostreams on Posix platforms and cstdio on Windows, because on Windows
        this is much faster. This macro can be defined to enable the
        iostream based implementation on all platforms. This macro is mutually
        exclusive with ENABLE_OLD_OFSTD_FTOA_IMPLEMENTATION and
        ENABLE_CSTDIO_BASED_FTOA_IMPLEMENTATION.

    ENABLE_OLD_OFSTD_ATOF_IMPLEMENTATION
      Affected: all modules
      Type of modification: Re-activates behavior of earlier DCMTK releases
      Explanation: DCMTK provides an implementation of atof() in class OFStandard
        that converts strings to double numbers in a locale-independent manner,
        whereas std::atof(), std::strtod() etc. depend on the global setting of the
        locale for the current process and may expect a decimal point character
        other than the period character.
        The implementation used in DCMTK 3.5.2 to 3.6.8 was found to produce
        rounding errors in certain cases and has thus been replaced by an
        iostream-based implementation. This macro re-activates the old version.

    ENABLE_OLD_OFSTD_FTOA_IMPLEMENTATION
      Affected: all modules
      Type of modification: Re-activates behavior of earlier DCMTK releases
      Explanation: DCMTK provides an implementation of ftoa() in class OFStandard
        that converts double numbers to strings in a locale-independent manner,
        whereas sprintf(), ftoa() etc. depend on the global setting of the
        locale for the current process and may expect a decimal point character
        other than the period character.
        The implementation used in DCMTK 3.5.2 to 3.6.8 was found to produce
        rounding errors in certain cases and has thus been replaced by an
        iostream-based implementation. This macro re-activates the old version.

    EXPERIMENTAL_READ_FROM_FILE
      Affected: dump2dcm
      Type of modification: Activates experimental or rarely used feature
      Explanation: When this macro is defined, the relatively new function
        createValueFromTempFile() is used for reading large binary data files.

    LOCK_IMAGE_FILES
      Affected: dcmpstat, dcmqrdb
      Type of modification: Activates experimental or rarely used feature
      Explanation: When this macro is defined, the DICOM image file to be send or
        received/created is locked exclusively.

    LOG4CPLUS_DISABLE_xxx
    (where xxx is one of TRACE, DEBUG, INFO, WARN, ERROR and FATAL)
      Affected: oflog
      Type of modification: Disables feature
      Explanation: When one of these macros is defined, all log message of this type
        and lower are disabled and optimized away.

    NO_GET_SUPPORT
      Affected: dcmqrdb
      Type of modification: Disables feature
      Explanation: Disables the experimental C-GET support in dcmqrdb.

    NO_PATIENTSTUDYONLY_SUPPORT
      Affected: dcmqrdb
      Type of modification: Disables feature
      Explanation: Disables support for the Patient/Study Only Query/Retrieve Model
        in dcmqrdb.

    OFCONDITION_IMPLICIT_BOOL_CONVERSION
      Affected: ofstd
      Type of modification: Activates experimental or rarely used feature
      Explanation: Activates an implicit conversion from OFCondition to OFBool, i.e.
        operator OFBool().  Implicit conversion might not always be a good idea
        since it can hide unwanted constructs.  Therefore, this operator is disabled
        by default.

    ON_THE_FLY_COMPRESSION
      Affected: storescu
      Type of modification: Activates experimental or rarely used feature
      Explanation: When this macro is defined, the storescu tries to compress or
        decompress the DICOM image to be sent (if required) depending on the
        negotiated transfer syntax.

    OLD_USER_INFO_SUB_ITEM_ORDER
      Affected: dcmnet
      Type of modification: Activates experimental or rarely used feature
      Explanation: Prior DCMTK releases did not encode A-ASSOCIATE user information
        sub-items in ascending order, i.e. they sent 55H followed by 54H and 56H.
        This behavior has been "legalized" by DICOM CP-280, but is known to create
        problems with some other toolkits.  The current DCMTK release always sends
        the user information sub-items in ascending order, but can be "forced" with
        this macro to revert to the old behavior.  It should be re-activated for
        testing purposes only.

    PASTEL_COLOR_OUTPUT
      Affected: dcmimgle, dcmimage
      Type of modification: Activates experimental or rarely used feature
      Explanation: Activates experimental code in dcmimgle/dcmimage that renders
        monochrome images with pastel colors.

    PDV_TEST
      Affected: dcmnet
      Type of modification: Activates experimental or rarely used feature
      Explanation: Causes the network module to insert a false, zero-length PDV
        (2-byte header) into each P-DATA-PDU.

    PIXELSTACK_MEMORY_LEAK_WORKAROUND
      Affected: dcmdata
      Type of modification: Activates experimental or rarely used feature
      Explanation: On certain platforms there seems to be a memory leak in
        DcmDataset::chooseRepresentation().  The work-around activated by this macro
        should solve this issue.

    POISON_DEPRECATED_FEATURE_MACROS
      Affected: all modules
      Type of modification: Declares deprecated feature macros as "poisoned"
      Explanation: The osconfig.h file generated by DCMTK at configure time
        contains a number of deprecated feature macros that are neither used
        nor tested anymore in DCMTK and will be removed in a future version.
        When compiling with gcc or clang, this macro will cause the compilation
        of user code that relies on one of these macros to generate an error.
        This prevents the use of feature macros that may not be present
        anymore and thus unintended behavior. Unfortunately, this functionality
        is not available for MSVC users, since MSVC's "#pragma deprecated(NAME)"
        does not catch the use of a macro in an #if statement like "#ifdef NAME".

    PRINT_REPLACED_DICTIONARY_ENTRIES
      Affected: dcmdata
      Type of modification: Activates experimental or rarely used feature
      Explanation: When reading the data dictionary, duplicate entries (i.e. entries
        replacing an older entry in the dictionary) are reported on console if
        compiled with this macro.  Useful for testing a new dictionary version.

    REJECT_FILE_IF_META_GROUP_LENGTH_ABSENT
      Affected: dcmdata
      Type of modification: Disables feature
      Explanation: When reading the a file that contains an incorrect meta header
        where meta header group length (0002,0000) is absent, DCMTK since release
        3.5.4 nevertheless tries to parse the file, unless this macro is enabled, in
        which case the behavior up to DCMTK 3.5.3 is retained.

    RETAIN_ASSOCIATION
      Affected: dcmqrti
      Type of modification: Activates experimental or rarely used feature
      Explanation: Keeps association to remote Query SCP open after
        study/series/image listing.  Default behavior is to open a new association
        for each query.

    REVERSE_OVERLAY_ORIGIN_ORDER
      Affected: dcmimgle
      Type of modification: Activates experimental or rarely used feature
      Explanation: When compiled with this macro, dcmimgle assumes that the values
        in Overlay Origin (60xx,0050) are in reverse order, i.e. X\Y instead of Y\X.

    SITE_UID_ROOT
      Affected: dcmdata
      Type of modification: Site customization
      Explanation: dcmdata contains a routine that generates DICOM unique
        identifiers (UIDs).  By default, these are constructed from the OFFIS UID
        namespace, i.e. using the OFFIS UID Root "1.2.276.0.7230010.3".  Users who
        prefer to let the toolkit generate UIDs from their own UID namespace should
        compile DCMTK with SITE_UID_ROOT defined to their own UID root.  Please make
        sure that the resulting UIDs do not exceed the 64 characters limit!
        DCMTK may add a maximum of 44 characters to the UID root when generating
        UIDs.  Therefore, the root must not be longer than 20 characters in order to
        avoid UID truncation.

    STARVIEW
      Affected: dcmimgle, dcmimage
      Type of modification: Activates experimental or rarely used feature
      Explanation: Enables support for old StarView 2 GUI class library from Star
        Division.

    SUPPRESS_CREATE_STAMP
      Affected: dcmdata
      Type of modification: Activates experimental or rarely used feature
      Explanation: When defined, suppresses the creation of a time stamp comment
        when re-generating dcdeftag.h and dcdictbi.cc.

    USE__LOCKING
      Affected: dcmnet
      Type of modification: Activates alternative implementation
      Explanation: Activates an alternative emulation of flock() on Win32 platforms
        using _locking().  This version should only be used on compilers where
        _get_osfhandle() is not available since it does not implement shared locks.

    USE_BINARY_MODE_FOR_STDOUT_ON_WINDOWS
      Affected: dcmdata
      Type of modification: Activates experimental or rarely used feature
      Explanation: On Windows systems, the standard output (stdout) is opened in
        text mode by default.  Therefore, the binary output of tools like dcm2pnm
        to stdout does not work correctly (in contrast to Unix systems).  When
        this preprocessor macro is defined, the binary mode is enabled for stdout.
        However, this causes newlines in the textual output to be converted to LF
        only (instead of CR LF which would be the usual translation for Windows).

    USE_NULL_SAFE_OFSTRING
      Affected: ofstd
      Type of modification: Activates feature
      Explanation: When this macro is defined, OFString(NULL) results in an empty
        string.  If this macro is not defined, OFString(NULL) causes a NULL pointer
        dereference.  This macro has no effect when HAVE_STL_STRING is also defined.
        Currently, this macro is always defined by DCMTK's Makefiles.  This will
        change in future releases.

    USE_WIN32_CREATE_MUTEX
      Affected: ofstd
      Type of modification: Activates alternative implementation
      Explanation: Starting with DCMTK 3.6.2, the Win32 version of the OFMutex class
        uses critical sections instead of Win32 mutexes, because critical sections
        are much faster.  Their only drawback is that they cannot be shared across
        processes.  Users who want to revert to the behavior of older DCMTK releases
        can define this macro.

    USE_WIN32_READ_WRITE_LOCK_HELPER
      Affected: ofstd
      Type of modification: Re-activated behavior of earlier DCMTK releases
      Explanation: Starting with DCMTK 3.6.4, the Win32 version of the
        OFReadWriteLock class uses Slim Reader/Writer (SRW) Locks, which are
        available since Windows Vista, instead of the older implementation based on
        a Mutex, a Semaphore and a counter, because SRW locks are much faster.
        Users who want to revert to the behavior of older DCMTK releases can define
        this macro.

    USING_STD_NAMESPACE
      Affected: all modules
      Type of modification: Re-activated behavior of earlier DCMTK releases
      Explanation: DCMTK by default does not anymore pollute the default namespace
        by importing namespace std.  Earlier releases did this to simplify
        compatibility with older compilers where STL classes were not consistently
        defined in namespace std.  We now have configure macros which should care
        for this.  If user code still relies on namespace std to be included,
        compile with this macro defined.

    WIDE_CHAR_FILE_IO_FUNCTIONS
      Affected: ofstd
      Type of modification: Activates feature
      Explanation: In addition to the standard file I/O functions, the OFFile class
        also defines the corresponding wide character functions from C99 standard.
        Since these functions are not yet supported by all compilers and the current
        implementation is Windows-specific, this feature is disabled by default.
        When using CMake, you can enable this macro by setting the CMake option
        DCMTK_WIDE_CHAR_FILE_IO_FUNCTIONS to "on".

    WIDE_CHAR_MAIN_FUNCTION
      Affected: currently not used
      Type of modification: Activates experimental or rarely used feature
      Explanation: On Windows (at least for MSVC), a different main function has
        to be used in order to get the command line arguments with wide character
        encoding (UTF-16).  By defining this flag, the macro DCMTK_MAIN_FUNCTION
        expands to wmain() instead of main().  When using CMake, you can enable
        this macro by setting the CMake option DCMTK_WIDE_CHAR_MAIN_FUNCTION to
        "on".  Usually, WIDE_CHAR_FILE_IO_FUNCTIONS should also be enabled.

    WIDE_CHAR_XML_PARSER
      Affected: ofstd
      Type of modification: Activates experimental or rarely used feature
      Explanation: The XML parser that is part of the DCMTK also supports a wide
        character API, at least on Windows systems.  By defining this macro, the
        type "wchar_t" is used for character strings instead of "char".  Please
        note, however, that some DCMTK tools and classes have not yet been adapted
        for the wide character API of the parser, e.g. cda2dcm and the underlying
        class DcmEncapsulatedDocument.  This is also the reason why there is no
        CMake option yet.

    WRITE_VERY_LARGE_CHUNKS
      Affected: dcmdata
      Type of modification: Re-activated behavior of earlier DCMTK releases
      Explanation: On Windows (at least for some versions of MSVC), calls to
        fwrite() for more than 67,076,095 bytes (a bit less than 64 MByte) fail if
        we're writing to a network share.  See MSDN KB899149.  As a workaround, we
        always write in chunks of 32M which should hardly negatively affect
        performance.  This macro enables the behavior of earlier DCMTK releases,
        i.e. to always call fwrite with as much data as possible, which is known
        not to work correctly on Win32 but might offer very minor performance
        benefits on other platforms.

    ZLIB_ENCODE_RFC1950_HEADER
      Affected: dcmdata
      Type of modification: Activates experimental or rarely used feature
      Explanation: When this macro is defined, the deflated ZLIB format is created
        instead of the deflated bitstream format (i.e. RFC 1950 instead of RFC
        1951). Please note that the resulting bitstream is not DICOM compliant.
        So, use only for testing, and use with care!

Generated on for DCMTK Version 3.7.0 by Doxygen 1.16.1