Конечно, если «имена, начинающиеся с __, запрещены в C ++», вы также не должны использовать их в прототипах :-) * a
Я вижу два способа сделать это.
Во-первых, вы можете убедиться, что порядок параметров в ваших комментариях всегда соответствует порядку в вашем прототипе.
Или, во-вторых, вы могли бы также ввести настоящие имена в свои прототипы.
Сам я предпочитаю второй подход, так как мне нравится иметь возможность сообщать, какие параметры передаются, даже если функция не имеет комментариев к нему (или, что еще хуже, комментарии устаревают). Это намного проще с таким прототипом, как:
void move(int xcoord, int ycoord);
, чем с:
void move(int, int);
В некоторых средах мы даже зашли так далеко, что процесс сборки гарантирует, что все прототипы функций имеют идентичные параметры в качестве определения функции.
* a) Эти идентификаторы фактически не предназначены для использования в обычных программах. Раздел 17.6.3.3.2 cpp0x (но это ограничение существует довольно давно как в C, так и в C ++) сообщает:
Определенные наборы имен и сигнатур функций всегда зарезервированы для реализации:
- Каждое имя, которое содержит двойное подчеркивание
__
или начинается с подчеркивания, за которым следует заглавная буква, резервируется для реализации для любого использования.
- Каждое имя, начинающееся с подчеркивания, зарезервировано для реализации для использования в качестве имени в глобальном пространстве имен.
Другими словами, не используйте их в своих целях.