HP aC++/HP ANSI C Release Notes (B3901-90037; A.06.26; September 2011)
5 Compatibility information
Maintaining binary compatibility is a key release requirement for new versions of HP
aC++. The compiler has maintained the same object model and calling convention and
remains compatible with the HP-UX runtime in the code that it generates as well as its
intrinsic runtime library (libCsup) across the various releases of HP aC++ and its run-time
patch stream.
aC++ standard conformance and compatibility changes
The following document provides the deattails of the differences that you can experience
when upgrading from HP aC++ Version 5.x to HP aC++ Version 6.0:
http://h21007.www2.hp.com/portal/site/dspp/
menuitem.863c3e4cbcdc3f3515b49c108973a801/?
ciid=2708d7c682f02110d7c682f02110275d6e10RCRD
Caliper compatibility
For binaries containing objects generated with version A.05.38 of the compiler, it is
recommended that you use Caliper version 2.1 for performance measurements and PBO.
You can download Caliper 2.1 from www.hp.com/go/caliper.
WDB compatibility
It is recommended that you use the latest version of the WDB debugger. You can obtain
the latest information on the debugger at Developer and Solution Partner page of the HP
web site: www.hp.com/go/wdb.
Difference in class size when compiling in 32-bit and 64-bit mode
The size of a class containing any virtual functions varies when compiled in 32-bit mode
versus 64-bit mode. The difference in size is caused by the virtual table pointer (a pointer
to an internal compiler table) in the class object. (The pointer is created for any class
containing one or more virtual functions.)
When compiling the following example in 32-bit mode, the output is 8. In 64-bit mode,
the output is 16.
extern "C" int printf(const char *,...);
class A {
int a;
public:
virtual void foo(); //virtual function foo, part of class A
};
void A::foo() {
return;
}
int main() {
aC++ standard conformance and compatibility changes 47