![]() |
![]() |
![]() |
![]() |
![]() |
CPP2SDL Messages
CPP2SDL may produce three kinds of messages during the translation of a set of header files.
- Error messages are printed if CPP2SDL finds any syntactic or semantic errors in the input header files. See Example usage of some C/C++ functionality for more information about how CPP2SDL handles errors in the input.
- Warnings are given if CPP2SDL finds language constructs that for some reason cannot be fully translated. The tool also prints warnings if it has to make assumptions about a construct that not necessarily are valid.
- Information messages are all other messages that are printed.
The rest of this section lists and explains all errors and warnings that may be issued by CPP2SDL.
Errors
An error was found during the syntactic analysis of the input. CPP2SDL will not continue with semantic analysis and translation to SDL, since the program is not correct.
If this error message is printed for a program that is accepted by a C/C++ compiler, make sure that the correct language dialect has been set to CPP2SDL by means of the -dialect option.
ERROR 3260 The identifier <identifier name> is undeclared.
An identifier is undeclared, i.e. the program is not semantically correct and will therefore not be translated to SDL.
ERROR 3261 The type <type name> is undeclared, or is depending on an undeclared type.
A type is undeclared, or depends on a type that is undeclared. A type defined by a typedef of an undeclared type is an example of a type that depends on a undeclared type. Since the program is not semantically correct, it will not be translated to SDL.
ERROR 3262 The base <base class name> is undeclared.
A class inherits from a base class that is undeclared. This is a semantic error, and the program will thus not be translated to SDL.
ERROR 3263 Illegal instantiation of template <template name>.
A template instantiation is semantically incorrect. Make sure that the number of actual arguments in the template instantiation matches the number of formal arguments in the template declaration, and that the kinds of the arguments are correct. Since the program is not semantically correct, it will not be translated to SDL.
Warnings
WARNING 3201 Static member variable <variable name> will not be globally accessible since no SDL variables are allowed.
A static member variable cannot be fully translated, since no external variables are allowed in the context where the generated SDL declarations are to be injected. The static variable will still be accessible as an ordinary member variable, but not as a globally accessible variable. Unset the option -novariables to allow generation of external SDL variables.
WARNING 3202 Static overloaded operator <operator name> will not be globally accessible.
A static overloaded operator cannot be fully translated, since it is not possible to qualify the name of an overloaded operator in SDL which otherwise would be required. The static operator will still be accessible as an ordinary member overloaded operator, but not as a globally accessible overloaded operator. Refer to Overloaded Operators.
WARNING 3203 Cannot translate incomplete type declaration without declared objects. The declaration will be ignored.
An incomplete type declaration that is not used as the type of at least one object (e.g. variable, constant, or type) is a useless declaration that will not be translated to SDL. See Incomplete Types for more about useless incomplete type declarations.
WARNING 3204 Cannot translate overloaded operator, since it is declared in a namespace.
An overloaded operator declared in a namespace cannot be translated to SDL, since it is not possible to qualify the name of an overloaded operator in SDL which otherwise would be required. Refer to Overloaded Operators.
WARNING 3205 Cannot translate overloaded shift operator, since the '<' or '>' operator also is overloaded in this scope.
The translation rule for overloaded operators only supports translation of either the < and > operators or the << and >> operators. This warning is given if an operator from both these operator pairs are overloaded in a certain scope. See Overloaded Operators for more information.
WARNING 3206 Cannot translate overloaded operator, since no corresponding SDL operator exists.
An overloaded operator cannot be translated to SDL, since no appropriate SDL operator exists that could represent it. The table in Overloaded Operators shows what overloaded C++ operators that may be represented in SDL.
WARNING 3207 Unable to evaluate sizeof expression properly.
A constant expression contains a usage of the sizeof() operator, and could therefore not be safely evaluated by CPP2SDL. The translation of the constant expression may thus be incorrect, and should be manually reviewed. See Constant Expressions for more information about constant expressions.
WARNING 3208 The member <member name> of <class name> inherited via <base class names> is inaccessible and will not be translated.
An inherited class member cannot be accessed in C++ due to a combination of multiple inheritance and base classes with members having the same name. The member will thus not be translated to SDL.
WARNING 3209 Cannot translate function pointer type. It will be represented by ptr_void.
This warning is given when a function pointer type is encountered in the input. The support for function pointers is limited (see Function Pointers), and they will be represented as untyped pointers in SDL (i.e. ptr_void).
WARNING 3210 Cannot translate typedef of function type. The declaration will be ignored.
A typedef declaration where the source type is a function type cannot be translated to SDL, since there is no translation rule for function types.
WARNING 3211 Cannot translate template declaration. The declaration will be ignored.
A template declaration cannot be translated to SDL. Only instantiations of a template declaration can be translated. Note that this warning is given also when a template instantiation has been specified in an import specification (see Template Instantiations). In that case the warning could be ignored.
WARNING 3212 Cannot fully translate ellipsis function. Unspecified function arguments will be ignored.
A function with unspecified arguments (a.k.a. an ellipsis function) cannot be fully translated to SDL, since no information has been provided about the unspecified arguments. The function will be translated, but without taking the unspecified arguments into consideration. See Prototypes for Ellipsis Functions to learn how to use an import specification to provide CPP2SDL with actual arguments for unspecified formal arguments of ellipsis functions.
WARNING 3213 The typedef name <name> conflicts with the name of another non-compatible type. The declaration will be ignored.
A typedef declaration cannot be translated to SDL, since the typedef name is the same as another type that is not type compatible with the type defined by the typedef itself. This warning may be given for typedefs of pointers or arrays of tagged types. For example:
typedef struct T {int i;} *T;This declaration, which is illegal in C++ but legal in C, contains two types called T that are type incompatible. CPP2SDL will make the type struct T available in SDL (called T there), while the type T will not be translated.
It is recommended to change the name of either the typedef name or the type tag to enable CPP2SDL to translate both types, and thus avoid getting this warning.
WARNING 3290 The identifier <identifier name> does not refer to a declared object. It will be ignored.
This warning is given if CPP2SDL finds an identifier in an import specification that does not exist in the input program. The identifier will be ignored.
WARNING 3291 Cannot translate the identifier <identifier name>, since it is a class member.
This warning is given if CPP2SDL finds an identifier in an import specification that refers to a class member in the input program. The identifier will not be translated, since only declarations in namespaces may be translated (see Import Specifications).
http://www.ibm.com/rational |
![]() |
![]() |
![]() |
![]() |