📄 diffs.gml
字号:
.endbull
.*
.beglevel
.*
.section Changes to the C++ Compiler for 11.0
.*
.begbull
.bull
The C++ compiler now optimizes empty base-classes to occupy zero
storage in the derived class memory layout.
The C++ Working Paper recently allowed this optimization to be
performed by conforming implementations.
Furthermore, the optimization has speed and size benefits.
There are certain classes of (broken) C++ programs that may not
function properly with the new optimization.
If you explicitly memset() an empty base class, you will be clearing
memory that you may not expect to be cleared since the "zero sized"
base class in actual fact shares storage with the first member of the
derived class.
A memset() of the entire derived class is fine though.
.bull
We have added support for the
.mono mutable
keyword which is used to indicate data members that can be modified
even if you have a
.us const
pointer to the class.
.exam begin
class S {
mutable int x;
void foo() const;
};
void S::foo() const {
x = 1; // OK since it is mutable
}
.exam end
.bull
We have added support for the
.mono bool
type along with
.mono true
and
.mono false.
.bull
We have added support for the
.mono explicit
attribute.
It marks a constructor so that it will not be considered for
overloading during implicit conversions.
.exam begin
struct S {
explicit S( int );
};
S v = 1; // error; cannot convert 'int' to 'S'
.exam end
.np
Suppose the class was changed as follows:
.exam begin
struct S {
explicit S(int );
S( char );
};
S v = 1; // OK; S( char ) is called
.exam end
.np
The fact that
.mono S(int)
is not considered leaves
.mono S(char)
as the only way to satisfy the implicit conversion.
.bull
We have added support for namespaces.
.millust begin
namespace x {
// anything that can go in file-scope
}
namespace {
// anything in here is local to your module!
}
.millust end
.np
In the above example, you can access names in the namespace "x"
by "x::" scoping.
Alternatively, you can use the "using namespace x" statement
(thereby eliminating the need for "x::" scoping).
You can include a part of the namespace into the current scope with
the "using x::member" statement.
(also eliminating the need for "x::" scoping).
.autopoint
.point
Namespaces eliminate the hand mangling of names.
For example, instead of prefixing names with a distinguishing string
like "XPQ_" (e.g., XPQ_Lookup), you can put the names in a namespace
called "XPQ".
.point
Namespaces allow for private names in a module.
This is most useful for types which are used in a single module.
.point
Namespaces encourage the meaningful classification of implementation
components.
For example, code-generation components might reside in a namespace
called "CodeGen".
.endpoint
.bull
We have added support for RTTI (Run-Time Type Information).
.bull
We have added support for the new C++ cast notation.
It allows you to use less powerful casts that the all powerful C-style
cast and to write more meaningful code.
The idea is to eliminate explicit casts by using a more meaningful
new-style cast.
The new C++ casts are:
.np
.bi reinterpret_cast
.us < type-id >(expr)
.br
.bi const_cast
.us < type-id >( expr )
.br
.bi static_cast
.us < type-id >( expr )
.br
.bi dynamic_cast
.us < type-id >( expr )
(part of RTTI)
.bull
We have improved (faster) pre-compiled header support.
.bull
.ix '__int64'
We have added "long long" (64-bit integer) support in the form
of a new
.us __int64
type.
.bull
The default structure packing was changed from "zp1" to "zp2" in the
16-bit compiler and from "zp1" to "zp8" in the 32-bit compiler.
.bull
The default type of debugging information that is included in object
files is "Dwarf".
It used to be "Watcom".
.bull
A new double-byte string processing option has been added (zkl).
When this option is specified, the local or current code page
character set is used to decide if the compiler should process strings
as if they might contain double-byte characters.
.endbull
.*
.section Changes to the C Compiler for 11.0
.*
.begbull
.bull
We have improved (faster) pre-compiled header support.
.bull
.ix '__int64'
We have added "long long" (64-bit integer) support in the form
of a new
.us __int64
type.
.bull
The default structure packing was changed from "zp1" to "zp2" in the
16-bit compiler and from "zp1" to "zp8" in the 32-bit compiler.
.bull
The default type of debugging information that is included in object
files is "Dwarf".
It used to be "Watcom".
.bull
A new double-byte string processing option has been added (zkl).
When this option is specified, the local or current code page
character set is used to decide if the compiler should process strings
as if they might contain double-byte characters.
.endbull
.*
.section Changes to the Code Generator for 11.0
.*
.begbull
:cmt. .bull
:cmt. Generation of code for the Digital Equipment Corporation Alpha AXP
:cmt. processor is now possible.
:cmt. .bull
:cmt. For the DEC Alpha AXP, we support Microsoft-compatible calling conventions
:cmt. and in-line assembly formats.
.bull
We support Microsoft-compatible in-line assembly formats using the
"_asm" keyword.
.bull
A new optimization, "branch prediction", has been added.
This optimization is enabled by the "ob" or "ox" compiler options.
The code generator tries to increase the density of cache use by
predicting branches based upon heuristics (this optimization
is especially important for Intel's Pentium Pro).
.bull
We have added Multi-media Extensions (MMX) support to the in-line
assemblers.
.bull
.ix '__int64'
We have added "long long" (64-bit integer) support in the form
of a new
.us __int64
type.
.endbull
.*
.section Changes to the Compiler Tools for 11.0
.*
.begbull
:cmt. .bull
:cmt. The &dbgname now supports debugging of applications running on the DEC
:cmt. Alpha AXP processor.
.bull
The &lnkname supports incremental linking.
.bull
The &lnkname can now process COFF and ELF format object files, as
well as OMF et al.
The &lnkname can now read both AR-format (Microsoft compatible)
libraries and old-style OMF libraries.
.bull
Support for creating 16-bit DOS overlaid executables has been removed
from the linker.
.bull
The &libname (&libcmdup) can now process COFF and ELF format object
files, as well as OMF et al.
The &libname can now read/write both AR-format (Microsoft compatible)
libraries and old-style OMF libraries.
The default output format is AR-format and this can be changed by
switches.
The &libname can output various format import libraries.
.bull
We have added Multi-media Extensions (MMX) support to the &asmname
(&asmcmdup).
:cmt. .bull
:cmt. A new assembler for the DEC Alpha AXP is included in the package.
.bull
A new version of the &disname (&discmdup) can disassemble Intel
or Alpha AXP object code files.
It can process ELF, COFF or OMF object files and ELF, COFF or PE
format (Win32) executables.
The &disname looks at image file being input to determine the
processor-type (defaults to Intel).
.np
The old disassembler (WDISASM) has been retired and is not included in
the package.
.bull
We have added new tool front-ends that emulate Microsoft tools.
These are:
.begbull $compact
.bull
nmake
.bull
cl
.bull
link
.bull
lib
.bull
rc
.bull
cvtres
.endbull
.np
These programs take the usual Microsoft arguments and translate them,
where possible, into equivalent &company arguments and spawn the
equivalent &company tools.
.bull
&makname now processes Microsoft format makefiles when the "ms" option
is used.
.endbull
.*
.section Changes to the C/C++ Libraries for 11.0
.*
.begbull
.bull
We have added multi-byte and wide character (including UNICODE)
support to the libraries.
.bull
We include run-time DLLs for the C, Math and C++ Libraries.
.bull
We have added Multi-media Extensions (MMX) support to the libraries.
.bull
The following new functions were added to the library...
.begnote
.note multi-byte functions
.endnote
.bull
The
.kw clock
function accuracy has changed from 100 ticks per second to 1000 ticks
per second (i.e.,
.kw CLOCKS_PER_SEC
has changed).
.bull
A "commit" flag ("c") was added to the fopen()
.us mode
argument.
.bull
.ix 'BINMODE'
The global translation mode flag default is "text" unless you
explicitly link your program with
.fi BINMODE.OBJ.
.bull
Processing of the "0" flag in the format string for the printf()
family of functions has been corrected such that when a precision is
specified, the "0" flag is ignored.
.exam begin
printf( "%09.3lf\n", 1.34242 ); // "0" flag is ignored
printf( "%09lf\n", 1.34242 ); // "0" flag is not ignored
.exam end
.bull
.ix '__int64'
Support for printing
.us __int64
values was added to
.kw printf
and related functions.
.bull
.ix '__int64'
Support for scanning
.us __int64
values was added to
.kw scanf
and related functions.
.bull
The Win32
.kw _osver
variable was added to the library.
.bull
The Win32
.kw _winmajor,
.kw _winminor
and
.kw _winver
variables were added to the library.
.endbull
.*
.section Changes to the DOS Graphics Library for 11.0
.*
.begbull
.bull
The graphics library now performs the VESA test
.us before
testing for vendor specific graphics cards.
This fix is intended to broaden the number of graphics cards that are
supported.
.endbull
.*
.section Changes in Microsoft Foundation Classes Support for 11.0
.*
.begbull
.bull
Version 4.1 of the 32-bit MFC is included in the package.
.bull
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -