Re: [HACKERS] Add some const decorations to prototypes

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [HACKERS] Add some const decorations to prototypes
Дата
Msg-id 31668.1510332807@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [HACKERS] Add some const decorations to prototypes  (Fabien COELHO <coelho@cri.ensmp.fr>)
Список pgsql-hackers
Fabien COELHO <coelho@cri.ensmp.fr> writes:
>> LWLockTrancheArray = (char **)
>>     MemoryContextAllocZero(TopMemoryContext,
>>                            LWLockTranchesAllocated * sizeof(char *));

> After your explanation, and on third thoughts, ISTM that the assignment 
> should not include "const" in the explicit cast,

Can't get terribly excited about that one way or the other.  I think
the statement would be OK as-is, and it would also be fine as
   LWLockTrancheArray = (const char **)    MemoryContextAllocZero(TopMemoryContext,
LWLockTranchesAllocated* sizeof(const char *));
 

The other two possible combinations are not good of course --- not that
they'd generate invalid code, but that they'd require readers to expend
brain cells convincing themselves that the code wasn't wrong.

> ... and moreover the compiler does not 
> complain without the const.

Arguing on the basis of what your compiler does is a pretty shaky basis.
It's not impossible that someone else's compiler would complain if the
casted-to type isn't identical to the variable's type.  I tend to agree
that a compiler *should* allow "char **" to be cast to "const char **"
silently, but that isn't necessarily what happens in the real world.
        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Fabien COELHO
Дата:
Сообщение: Re: [HACKERS] Add some const decorations to prototypes
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] Fix bloom WAL tap test