Developer Guide and Reference

Contents

Checking Arrays

The pointer checker is not supported on
macOS*
systems.
The C and C++ language allows you to define arrays in another module with the
extern
keyword. These arrays can be defined without specifying the dimensions.
Example: Creating an Undimensioned Array
extern char an_undimensioned_array [];
The compiler allows more than one definition for externally defined arrays. During link time, the compiler uses the array definition with the largest bounds.
To check these arrays, the compiler defines a global symbol that marks the end of the array. However, checking undimensioned arrays can lead to a multiple defined linker error. To fix this linker error, do one of the following:
  • Use only one array definition.
  • Use the negative form of the
    [Q]check-pointers-undimensioned
    compiler option to disable checking arrays without bounds.
This compiler option suppresses checking in the module that declares an array without bounds. The pointer checker will still check the arrays in modules that actually define the arrays with bounds.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804