Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Compiler specifics

visual c en


Compiler specifics

This appendix contains the compiler information database which is used by the automatic code extraction program ExtractCode.cpp to build makefiles that will work properly with the various compilers.

The explanation for this database format is found in the de 16116u2019q scription of ExtractCode.cpp in Chapter XX. The information about files that won't compile, along with the data for commercial compilers, is removed from the published version, and only the online version at https://www.BruceEckel.com (along with the source code file at that location) will contain that data (since it will be subject to change as new compilers are added and as bugs are removed).



#: :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:

# 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

#################################################

# Borland C++ Builder 4 -- With Upgrade!!!

# Target name used in makefile:

# 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):

@# Note: this requires the upgrade from

@# www.Borland.com for successful compilation!

@CPP = Bcc32

@CPPFLAGS = -w-inl -w-csu -wnak

@OFLAG = -e

@.SUFFIXES : .obj .cpp .c

@.cpp.obj :

@ $(CPP) $(CPPFLAGS) -c $<

@.c.obj :

@ $(CPP) $(CPPFLAGS) -c $<

# Doesn't support static const

# array initialization:

C10:StaticArray.cpp

# Problem with string constructors at run-time:

C17:ICompare.cpp

# Template bug:

C19:ArraySize.cpp

# Not sure:

C20:AssocInserter.cpp

# Bitset is Broken in this compiler's library:

C20:BitSet.cpp

# Standard Library problem:

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

#################################################

# Visual C++ 6.0 -- With Service Pack 3!!!

# Target name used in makefile:

# 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):

@# Note: this requires the service Pack 3 from

@# www.Microsoft.com for successful compilation!

@CPP = cl

@CPPFLAGS = -GX -GR

@OFLAG = -o

@.SUFFIXES : .obj .cpp .c

@.cpp.obj :

@ $(CPP) $(CPPFLAGS) -c $<

@.c.obj :

@ $(CPP) $(CPPFLAGS) -c $<

C02:Incident.cpp

# It can't even handle multiple "for(int i =...:"

# statements in the same scope (a really old

# language feature!):

C02:Intvector.cpp

C03:Assert.cpp

C07:MemTest.cpp

C09:Cpptime.cpp

C12:Comma.cpp

C13:GlobalNew.cpp

# Common problem with namespaces and C libraries:

C17:ICompare.cpp

C18:FileClassTest.cpp

C18:Datagen.cpp

C18:Datascan.cpp

# Can't do template type induction properly:

C19:ArraySize.cpp

# Doesn't know about template-templates:

C19:TemplateTemplate.cpp

C19:applyGromit2.cpp

# Can't do template specializations:

C19:Sorted.cpp

# Can't do explicit template instantiation:

C19:ExplicitInstantiation.cpp

# Missing part of iostreams:

C20:StreamIt.cpp

# Problem with STL:

C20:BasicSequenceOperations.cpp

C20:VectorCoreDump.cpp

C20:DequeConversion.cpp

C20:Stack2.cpp

# Problem with static class initializer:

C20:BankTeller.cpp

# Missing STL functionality:

C20:VectorOfBool.cpp

# STL problem:

C20:AssocInserter.cpp

# Various problems:

C20:WildLifeMonitor.cpp

C20:MultiSet1.cpp

C20:Thesaurus.cpp

# These use the SGI STL extensions, so they

# actually aren't supposed to compile

# with this compiler:

C20:MapVsHashMap.cpp

C21:Compose2.cpp

# Namespace problem again, and other issues:

C21:FunctionObjects.cpp

C21:Binder1.cpp

C21:Binder3.cpp

C21:Binder4.cpp

C21:RandGenTest.cpp

C21:MemFun1.cpp

C21:MemFun2.cpp

C21:FindBlanks.cpp

C21:MemFun3.cpp

C21:MemFun4.cpp

C21:FillGenerateTest.cpp

C21:Counting.cpp

C21:Manipulations.cpp

C21:SearchReplace.cpp

C21:Comparison.cpp

C21:Removing.cpp

C21:SortTest.cpp

C21:SortedSearchTest.cpp

C21:MergeTest.cpp

C21:SetOperations.cpp

C21:ForEach.cpp

C21:Transform.cpp

C21:CalcInventory.cpp

C21:TransformNames.cpp

C21:SpecialList.cpp

C21:NumericTest.cpp

# Most compilers don't support this yet:

C23:FunctionTryBlock.cpp

# Lack of support for 'static const' again:

C25:Recycle2.cpp

C26:ExtractCode.cpp

C26:MemTest.cpp

# All these do not compile only becase of the

# lack of support for 'static const'. To make

# them compile, you must substitute the

# 'enum hack' shown in chapter 8:

C08:StringStack.cpp

C08:Quoter.cpp

C08:Volatile.cpp

C10:StaticArray.cpp

C11:HowMany2.cpp

C11:Autocc.cpp

C11:Pmem2.cpp

C12:Smartp.cpp

C12:Iosop.cpp

C12:Copymem.cpp

C12:Refcount.cpp

C12:RefcountTrace.cpp

C13:MallocClass.cpp

C13:Framis.cpp

C13:ArrayNew.cpp

C14:FName1.cpp

C14:FName2.cpp

C16:IStack.cpp

C16:Stemp.cpp

C16:Stemp2.cpp

C16:Stackt.cpp

C23:Cleanup.cpp

C24:Selfrtti.cpp

C24:Reinterp.cpp

#################################################

# The egcs (Experimental g++ compiler) snapshot

# under Linux, dated July 18, 1998

(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

# Not sure:

C19:applyGromit2.cpp

# Missing the standard library 'at()':

C19:Sorted.cpp

C19:ExplicitInstantiation.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

# 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

# Broken in this compiler's library:

C20:BitSet.cpp

# These are because <sstream> isn't implemented

C18:NumberPhotos.cpp

C19:stringConvTest.cpp

C20:StringVector.cpp

C20:FEditTest.cpp

C20:StringDeque.cpp

C20:VectorOfBool.cpp

C20:WildLifeMonitor.cpp

C21:SortTest.cpp

C21:SortedSearchTest.cpp

C21:Binder4.cpp

C21:ForEach.cpp

# Problem in parsing PrintSequence.h:

C21:Counting.cpp

C21:Manipulations.cpp

C21:SearchReplace.cpp

C21:Comparison.cpp

C21:Removing.cpp

C21:CalcInventory.cpp

C21:TransformNames.cpp

C21:SpecialList.cpp

C21:NumericTest.cpp

# The end tag is required:

#///:~


Document Info


Accesari: 1133
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )