Skip to main content

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

ejemplo 54. Ejemplo
PROGRAM PLC_PRG
VAR
    pInt : POINTER TO INT;
    byteVar : BYTE;
END_VAR
pInt := ADR(byteVar);

Salida en el Mensajes vista:

  • sa_icon_message.png SA0019: Conversión implícita de puntero a 'POINTER TO BYTE' a puntero a 'POINTER TO INT'