samedi 22 octobre 2016

return -1 from an if conditional inside main function

I could't understand why a 'return -1;' is added in the following code.

    int32_t main(void)
   { SYS_Init();
    uint32_t au32Config[2];

      if(FMC_ReadConfig(au32Config, 2) < 0)
       return -1;

    if(((au32Config[0] & 0x01) == 1) || (au32Config[1] != DATA_FLASH_BASE))
    {
        FMC_EnableConfigUpdate();
        au32Config[0] &= ~0x1;
        au32Config[1] = DATA_FLASH_BASE;
        FMC_Erase(CONFIG_BASE);

        if(FMC_WriteConfig(au32Config, 2) < 0)
        return -1;

Is this a return value for the main function ? I know that an abnormal termination of main is signaled by a non zero return value.

Here the functions like FMC_ReadConfig() and FMC_WriteConfig() are defined in libraries as:

    -------------------------------------------------------------------------
        int32_t FMC_ReadConfig(uint32_t *u32Config, uint32_t u32Count)
    {
        int32_t i;

        for(i = 0; i < u32Count; i++)
            u32Config[i] = FMC_Read(FMC_CONFIG_BASE + i * 4);

        return 0;
    }
    -------------------------------------------------------------------------- 
    int32_t FMC_WriteConfig(uint32_t *u32Config, uint32_t u32Count)
    {
        int32_t i;

        for(i = 0; i < u32Count; i++)
        {
            FMC_Write(FMC_CONFIG_BASE + i * 4, u32Config[i]);
            if(FMC_Read(FMC_CONFIG_BASE + i * 4) != u32Config[i])
                return -1;
        }

        return 0;
    }
----------------------------------------------------------------------------

(Code is used in Data Flash storage of Cortex M0 Controller.)

Aucun commentaire:

Enregistrer un commentaire