STLport: Note For Visual C++ Users

| Note For Visual C++ Users ## Known problems #### Compiling If your program is multi-threaded, make sure you defined macro `_REENTRANT` to enable proper synchronization (if you are using SGI node allocator. If you are using new_alloc or malloc_alloc, you won't need that). You may encounter problems using `<iostream>` in mix with SGI STL `<string>, <stdexcept>` without defining _STLP_USE_OWN_NAMESPACE. Using _STLP_USE_OWN_NAMESPACE is the most safe way to cooperate with new I/O library and is definitely recommended unless you recompile the whole C++ std library with STLport installed. `_STLP_USE_EXCEPTIONS` is being defined automatically if the compiler defined `_CPPUNWIND` macro ("`/GX`" option). So you should not worry about it. There were reports that Visual C++ 4.0 have problems with namespaces in certain cases. Due to that, `_STLP_NO_NAMESPACES` defined for it in <stlcomp.h>. You may encounter problems with too long symbols when compiling with debug information. To handle this, try defining `_STLP_USE_ABBREVS` in `stlcomp.h`. You may experience problems with default SGI node allocator. I had no such problems, though. Default node allocator is quite fast, so I wouldn't recommend disabling it without serious reason. However, if it causes problems, define `_STLP_USE_MALLOC` or `_STLP_USE_NEWALLOC` to get bare malloc()-based or new()-based default allocator. If your program is multi-threaded, make sure you defined macro `_REENTRANT` to enable proper synchronization. [ VC++ 4.2 and higher] This version allows use of new-style <iostream>, <string> with STLport , as well as the old-style <iostream.h> . The default is new <iostream> usage. If you want to use old-style <iostream.h> in your project: define macro _STLP_NO_NEW_IOSTREAMS in <stl_user_config.h> or at the command line. If you are going to use new-style <iostream> without defining _STLP_USE_OWN_NAMESPACE: You may have to edit relative (or set full) path to VC++ native headers`` in <stl_user_config.h>. Using native versions is necessary to avoid clashes with compiled code in C++ runtime library. In the whole project, use coherent set of headers : all new-style. You may also try SGI STL adapted for MSVC++ 5.0 only, by Wayne Ouchida. (Note : looks like it's out of date and discontinued. It doesn't provide debug support and other extensions of this adaptation). ## Migration notes You should experience no other problems migrating from VC++ STL to SGI STL. Default `allocator<T>` in this adaptation is fully functional. #### Versions prior to 4.0 Visual C++ older than 4.0 won't compile STL. You have to upgrade.
| Table of Contents
| Copyright 2001 by STLport