SA0019: Conversiones implícitas de punteros
Detecta las conversiones de punteros generadas de forma implícita
Justificación: En CODESYS, los punteros no se escriben estrictamente y se pueden asignar entre sí de cualquier forma. Esto se usa con frecuencia y, por lo tanto, el compilador no lo informa. Sin embargo, también puede provocar un acceso no autorizado e inesperado. Por ejemplo, si asigna el tipo POINTER TO DWORD
a un puntero con el tipo POINTER TO BYTE
, la memoria se puede sobrescribir de forma no deseada.
Por lo tanto, compruebe siempre esta regla y bloquee el mensaje solo en los casos en los que desee acceder intencionalmente a un valor de un tipo diferente.
Conversiones hacia y desde el POINTER TO BYTE
SA0019 no comprueba el tipo de datos. Siempre están permitidos.
Las conversiones de tipos de datos implícitas se notifican con un mensaje diferente.
Importancia: Alta
Regla PLCopen: CP25
Excepción: BOOL
<-> BIT
PROGRAM PLC_PRG VAR pInt : POINTER TO INT; byteVar : BYTE; END_VAR
pInt := ADR(byteVar);
Salida en el Mensajes vista:
SA0019: Conversión implícita de puntero a 'POINTER TO BYTE' a puntero a 'POINTER TO INT'