[previous] 0315 [next] [I] Implicit conversion from a pointer to object type to a pointer to void.
Pointers REFERENCE - ISO:C90-6.3.4 Cast Operators - Semantics

An expression of type 'pointer-to-object' is being implicitly converted to type 'pointer-to-void'.

'void pointers' should be used with care. A 'pointer-to-object' can always be converted safely to a 'pointer-to-void', but the reverse is not true because the 'pointer-to-object' may have stricter alignment requirements.

For example:


/*PRQA S 2017,2211,3198,3199,3203,3227,3408 ++*/

extern void foo(unsigned char * puc)
{
    void * pvd;
    unsigned int * pui; 
    
    pui = (unsigned int *) puc;       /* Messages 0310 and 3305 - dangerous */

    pvd = (void *) puc;               /* Message  0314                      */
    pvd =          puc;               /* Message  0315                      */

    pui = (unsigned int *) pvd;       /* Message  0316 - dangerous          */
    pui =                  pvd;       /* Message  0317 - dangerous          */
}

See also:

QA·C Source Code Analyser 8.1.2
© 2013 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index Contents