Правила программирования на С и С++. Главы 1-6
Страница 51. Имена макросов должны записываться ЗАГЛАВНЫМИ_БУКВАМИ


 

45. Имена макросов должны записываться ЗАГЛАВНЫМИ_БУКВАМИ.

Как показывается в последующих разделах, макросы часто вызывают побочные эффекты. Поэтому полезно иметь возможность определить с первого взгляда, что у вас является макросом. Конечно, вы не должны использовать только заглавные буквы для чего-нибудь помимо макросов, иначе вы не достигнете цели данного правила.

45.1. Не используйте заглавных букв для констант перечисления.

Должна быть обеспечена возможность замены констант, определенных в перечислении, на переменную типа const. Если ее имя записано заглавными буквами, то вам придется его менять. Кроме того, имеются еще и проблемы с макросами (вскоре будут рассмотрены), которых нет у перечислений. Поэтому будет полезно иметь возможность различать их с первого взгляда. 

45.2. Не используйте заглавных букв в именах типов, созданных при помощи typedef.

Так как макрос также может использоваться в манере, подобной typedef, то полезно знать может или нет что-то быть использовано в качестве синтаксически правильного типа. Например, имея:

typedef void (*ptr_to_funct)(int );вы можете написать следующее: (ptr_to_funct)( p ); // преобразует p в указатель на функцию

ptr_to_funct f(long); // f возвращает указатель на функцию

Макрос типа: #define PTR_TO_FUNCTION void (*) (int )позволяет вам сделать преобразование: (PTR_TO_FUNCTION) ( p );но не позволяет объявить функцию: PTR_TO_FUNCTION f(long);Указанный макрос при подстановке дает: void (*) (int ) f(long);но компилятору нужно: void (*f(long))(int );

Имя типа из строчных букв не вызовет никаких проблем при чтении, потому что по смыслу вы всегда можете сказать, используется ли оно для типа или нет.

 
« Предыдущая статья