• In C++, non-standard "direct constructor calls", such as BitSet::BitSet(. . .) in the following example, are not supported:

    class BitSet { protected:
         enum BS_op {
                      BS_and = (int) '&',     BS_or = (int) '|',
                    };
     
          BitSet(const BitSet& x, const BitSet& y, enum BS_op op);
          friend BitSet operator & (const BitSet& x, const BitSet& y);
                 };
    BitSet operator & (const BitSet& x, const BitSet& y)
     {
      return BitSet::BitSet(x, y, BitSet::BS_and);
     }

    The Freescale HC(S)12 compiler accepts this non-standard construction. It is used in the bitset.h C++ header file shipped with the compiler. Code that uses this header file cannot be analyzed; it is currently not supported.

  • The Freescale HC(S)12 compiler selects an overloaded function with a non-plain char (signed char, unsigned char) parameter for a function call with a plain char argument. This is not supported. Example:

    class istream {
        istream& get(signed char p);
        istream& get(unsigned char p) {
                      return get((char)'a');
                       }
                  };

    The Freescale HC(S)12 compiler accepts this construction. It is used in the iostream.h C++ header file shipped with the compiler. Code that uses this header file cannot be analyzed; it is currently not supported.

     

  • In C++, non-standard constructions that use multiple type specifiers, such as streamsize  int in the following example, are not supported:

    class istream {
      typedef int streamsize; 
      istream& read(streamsize int n);
                  };

    The Freescale HC(S)12 compiler accepts this non-standard construction. It is used in the iostream.h C++ header file shipped with the compiler. Code that uses this header file cannot be analyzed; it is currently not supported.

     

  • In C++, implicit conversions from  void* pointer types to other pointer types are not supported. Example:

     class ios {
        int i;
               };
     int vscan(ios* stream = ((void *)0));

    The Freescale HC(S)12 compiler accepts this construction. It is used in the stream.h C++ header file shipped with the compiler. Code that uses this header file cannot be analyzed; it is currently not supported.

  • The built-in long long double type is not supported.
  • No labels