Bruce Eckel's Thinking in C++, 2nd Ed | Contents | Prev | Next |
#: :CompileDB.txt # Compiler information listings for Thinking in # C++ 2nd Edition By Bruce Eckel. See copyright # notice in Copyright.txt. # This is used by ExtractCode.cpp to generate the # makefiles for the book, including the command- # line flags for each vendor's compiler and # linker. Following that are the code listings # from the book that will not compile for each # compiler. The listings are, to the best of my # knowledge, correct Standard C++ (According to # the Final Draft International Standard). Please # note that the tests were performed with the # most recent compiler that I had at the time, # and may have changed since this file was # created. # After ExtractCode.cpp creates the makefiles # for each chapter subdirectory, you can say # "make egcs", for example, and all the programs # that will successfully compile with egcs will # be built. ################################################# # Compiling all files, for a (theoretical) fully- # conformant compiler. This assumes a typical # compiler under dos: { all } # Object file name extension in parentheses: (obj) # Executable file extension in square brackets: [exe] # The leading '&' is for special directives. The # dos directive means to replace '/' # with '\' in all directory paths: &dos # The following lines will be inserted directly # into the makefile (sans the leading '@' sign) # If your environment variables are set to # establish these you won't need to use arguments # on the make command line to set them: # CPP: the name of your C++ compiler # CPPFLAGS: Compilation flags for your compiler # OFLAG: flag to give the final executable name #@CPP = yourcompiler #@CPPFLAGS = #@OFLAG = -e @.SUFFIXES : .obj .cpp .c @.cpp.obj : @ $(CPP) $(CPPFLAGS) -c $< @.c.obj : @ $(CPP) $(CPPFLAGS) -c $< # Assumes all files will compile # See later for an example of unix configuration #################################################"CompileDB"> # Borland C++ Builder 4 # Target name used in makefile: { Borland } # Object file name extension in parentheses: (obj) # Executable file extension in square brackets: [exe] # The leading '&' is for special directives. The # dos directive means to replace '/' # with '\' in all directory paths: &dos # Inserted directly into the makefile (without # the leading '@' sign): @CPP = Bcc32 @CPPFLAGS = -w-inl -w-csu @OFLAG = -e @.SUFFIXES : .obj .cpp .c @.cpp.obj : @ $(CPP) $(CPPFLAGS) -c $< @.c.obj : @ $(CPP) $(CPPFLAGS) -c $< # Problem with string constructors: C17:StringIterators.cpp # Causes an unresolved external: C17:ICompare.cpp # Template bug: C19:ArraySize.cpp # Bitset is Broken in this compiler’s library: C20:BitSet.cpp # Not sure what the problem is here: C20:ListRobustness.cpp C20:BasicSequenceOperations.cpp # Problem with vector.cc C20:VectorCoreDump.cpp # bitset::bitset(string) missing: C20:VectorOfBool.cpp # compiler strangeness: C20:AssocInserter.cpp # Problem with templates? C21:FunctionObjects.cpp # Problem with the algorithms C21:PtrFun1.cpp C21:PtrFun2.cpp C21:MemFun1.cpp C21:SearchReplace.cpp # Function-level try blocks not implemented: C23:FunctionTryBlock.cpp # Uses the SGI STL extensions, so it actually # isn't supposed to compile with this # compiler: C20:MapVsHashMap.cpp C21:MemFun4.cpp C21:Compose2.cpp ################################################# # The egcs (Experimental g++ compiler) snapshot # under Linux: { egcs } (o) [] # The unix directive controls the way some of the # makefile lines are generated: &unix @CPP = g++ @OFLAG = -o @.SUFFIXES : .o .cpp .c @.cpp.o : @ $(CPP) $(CPPFLAGS) -c $< @.c.o : @ $(CPP) $(CPPFLAGS) -c $< # Files that won't compile # Error in streambuf.h: C18:Cppcheck.cpp # A basic compiler bug C20:BankTeller.cpp # Problem with the egcs iterator header C20:StreambufIterator.cpp C20:RawStorageIterator.cpp # egcs is missing istreambuf_iterator C20:WordList2.cpp C20:TokenizeTest.cpp C20:TokenIteratorTest.cpp C20:WordCount.cpp C20:MultiSetWordCount.cpp C21:SortTest.cpp C21:SortedSearchTest.cpp # egcs is missing std::iterator: C20:Ring.cpp # egcs is missing char_traits C17:ICompare.cpp # egcs vector and deque (at least) are missing # the "at()" functions: C20:IndexingVsAt.cpp # There’s a problem with the egcs string class: C17:Compare2.cpp # Problem with egcs priority_queue: C20:PriorityQueue4.cpp C20:PriorityQueue8.cpp # Broken in this compiler’s library: C20:BitSet.cpp # These are because <sstream> isn’t implemented C18:NumberPhotos.cpp C20:StringVector.cpp C20:FEditTest.cpp C20:StringDeque.cpp C20:VectorOfBool.cpp C20:WildLifeMonitor.cpp # The end tag is required: #///:~