Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, VoidEx, Вы писали:
8>>>просто надо знать как typedef работает.
VE>>Это не аргумент. Аргумент то, что при другом способе записи работа typedef становится очевидной
8>Вот не разу это не так. Не юлите.
Я бы вас упрекнул в незнании смысла слова "юлить", но не буду.
8>По вашей логике получается что если человек написал "typedef PCHAR const CPCHAR",
8>то для него будет очевидным что "typedef const PCHAR CPCHAR" тоже самое?
Нет. Для него будет очевидным, что вверху записано "typedef char * const CPCHAR".
При незнании тайпдефа внизу он увидит "typedef const char * CPCHAR" и ошибётся. Соот-но верхний вариант в заблуждение его не введёт.
Это первый, спорный и субъективный аргумент.
А есть второй (тоже субъективный, разумеется):
const char * const p1; // константный указатель на чар константный
char const * const p2; // константный указатель на константный чар
Я привык читать так, как внизу, хотя ясно, что в достаточно нетривиальных случаях это не прокатит,
но в своё время я изменил способ записи именно поэтому. Потому что неясно почему то слева надо const писать, то справа.
А так всегда справа. И от метода тоже справа.
8>Это не так. Если человек не понимает как работает typedef , то ничего очевидного тут нет,
8>как const не пиши. Это просто совпадение, что в первом варианте ваша точка зрения совпадает
8>с тем как работает typedef
К сожалению нет в близкой досягаемости людей, на которых можно было бы провести опыт, но
текстуальная замена запоминается и понимается почему-то проще, хотя и не верна в общем случае.
Здравствуйте, VoidEx, Вы писали:
VE>Я привык читать так, как внизу
Да, у Страуструпа так и написано: "Некоторые люди читают такие обьявления справа на лево"
Про typedef аргумент не очень, потому что человек должен знать как он работает,
а то получается что человек возможно не делает ошибки в обьявлении типа, не потому
что он понимает как это работает, а потому что он пишет const ровно перед звездочкой.
В итоге получается есть только ваш субьективный аргумент:
"Я привык читать так" супротив моего мнения, что "это не привычно для большинства",
и если код пишется не только для себя, то другим может быть не легко читать такой код.
>Потому что неясно почему то слева надо const писать, то справа.
Почему не ясно?
Цитирую: "Оператор обьявления, который делает указатель константой, — это *const.
Нет оператора обьявления const*, поэтому ключевое слово const слева от * интерпретируется
как часть базового типа."