HP aC++/HP C A.06.25 Release Notes
Table Of Contents
- HP aC++/HP ANSI C Release Notes
- Table of Contents
- 1 HP aC++/HP ANSI C Release Notes
- 2 What’s New in This Version
- New Features in Version A.06.25
- C99 default C compilation mode (Changed)
- Full -AA default C++ compilation mode (Changed)
- -Ax option enables support for several C++0x extensions (New)
- C99 features added to C++0x (New)
- extern template
- Decimal Floating Point supported in C++ mode (New)
- #pragma STDC FLOAT_CONST_DECIMAL64 (New)
- #pragma omp task (New)
- #pragma omp taskwait (New)
- Performance enhancements for +O1 (Changed)
- Non-template static data members initialized outside the class no longer treated as constants in strict mode (Changed)
- Enhancements to allow code to run well on current platforms and future multi-core processors (New)
- New diagnostic messages (New)
- Improved diagnostic messages (Changed)
- Enhanced +wendian warnings (New/Changed)
- New runtime abort messages (New)
- New Features in Version A.06.20
- Decimal floating-point arithmetic (HP-UX 11.31 only) (New)
- +annotate=structs (New)
- +check=lock (New)
- +check=thread (New)
- +O[no]autopar now supported in C++ Mode (New)
- +O[no]dynopt (HP-UX 11.31 only) (New)
- +inline_level num (Enhanced)
- -dumpversion (New)
- #include_next (New)
- #pragma diag_push (New)
- #pragma diag_pop (New)
- +Oinlinebudget is deprecated (Change)
- In next release, default C compilation mode will change from C89 to C99
- In next release, default C++ compilation mode will change to full -AA
- New Features in Version A.06.15
- printf, fprintf Optimization (New)
- +Wmacro Option (New)
- +Wcontext_limit Option (New)
- +wperfadvice Option (New)
- +Wv Option (New)
- +wlock Option (New)
- +O[no]autopar Option (New)
- +O[no]loop_block Option (New)
- +O[no]loop_unroll_jam (Default Change)
- +Olit=all (Default Change for HP C)
- +macro_debug= (New)
- +pathtrace (New)
- +check Suboptions (New)
- -Bhidden_def (New)
- -dM (New)
- #pragma OPT_LEVEL INITIAL (New)
- #pragma OPTIMIZE (Deprecated)
- #pragma [NO]INLINE (New for C++ Mode)
- _Asm_ld, _Asm_ldf, _Asm_st, _Asm_stf Intrinsics (New)
- Debugging Code Compiled with Opt Levels above +O1 Is Supported
- __attribute__ ((visibility("default"|"protected"|"hidden"))) Added (New)
- __attribute__ ((warn_unused_result)) Added (New)
- Change in treatment of cv-qualified assignment operators
- New Features in Version A.06.12
- New Features in Version A.06.10
- HP Code Advisor
- +cond_rodata Option (Obsoleted)
- +[no]dep_name Option (New)
- +expand_types_in_diag Option (New)
- +FPmode Option (Enhanced)
- +Ointeger_overflow (Default Changed)
- +Onolibcalls= Option (New)
- +wendian Option (New)
- +wlint Option (Enhanced)
- +wsecurity= Option (Enhanced)
- System-wide Option Configuration
- [NO]PTRS_TO_GLOBALS Pragma
- -AA -D_HP_NONSTD_FAST_IOSTREAM Performance Improvement Macro
- New Function Attributes
- Improved Diagnostics
- C++ Standard Library Change
- Earlier Versions
- New Features in Version A.06.25
- 3 Installation Information
- 4 Compatibility Information
- 5 Known Problems and Workarounds
- Obsolete LANG-STARTUP Files
- codecvt_byname Facet Needed for C Locale Conversions
- Using +check= Options and Running on Test and Deployment Systems
- GPREL22 Relocation Error
- Object Files Generated at +O4 or -ipo
- Incompatibilities Between the Standard C++ Library Ver. 1.2.1 and the Draft Standard
- Conflict Between macros.h and numeric_limits Class (min and max)
- Known Limitations
- 6 Related Documentation
a lambda function typically encloses the runtime state or environment of the declaring
function, being therefore able to access the local variables of the current function.
The way these variables are accessed can be controlled using either the '&' in a lambda
capture list ([&]), in which case the variables are passed by reference; by using a '='
([=]), whereby the variables are simply copied (analogous to call-by-value); or a
combination of the two.
Example:
int main() {
auto lambda = [] { printf("Lambda at work!"); };
lambda();
}
C99 features added to C++0x (New)
The following C99 features have been added to the C++0x standard and are available
when compiling in C++0x mode:
Mixed string literal concatenations
In C++0x mode and in default C++ mode, aC++ now accepts string literal concatenations
involving an ordinary char string literal and a wide string literal.
For example:
wchar_t *str1 = L"a" "b"; // Okay, same as L"ab".
wchar_t *str2 = "a" L"b"; // Okay, same as L"ab"
Such constructs were already accepted in C99 and GNU modes.
Rule changes related to determining the type of large literal constants
As in C99, unsuffixed integer literals that do not fit in type long, but can fit in type
unsigned long, are given type long long instead. This might cause certain
expressions to differ in values in C++0x and default C++ compilation modes.
Example for +DD32:
bool b = 4000000000 > -1; // b = true in C++0x mode.
// b = false in default C++ mode with long long enabled.
// (In that case, a warning is issued on the conversion of -1
// to an unsigned type.)
For +DD64, both modes are the same for that literal value.
Variadic macros
With this release, aC++ now accepts C99-style variadic macros in C++0x mode.
Like C99, the special identifier __VA_ARGS__ represents the set of all the arguments
passed to the macro just as they are passed in the variable arguments mechanism for
functions.
Example:
14 What’s New in This Version