Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ruk_for_C_Стандарт на язык Си.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
259.58 Кб
Скачать

10.5. Пробелы

Перед и после знака арифметической и логической операции следует ставить

пробел (за исключением знаков плюс или минус в роли унарного оператора, когда

пробел ставится только перед оператором).

Пробел необходим, чтобы предшествовать использованию двухместного оператора.

Пробел также должен следовать за каждым двухместным оператором.

Пример:

ab_upd = ab_dev + ab_rex;

Пробелом следует отделять объект, который предшествует левой скобке и

объект, который следует за правой скобкой.

Запрещается использование пробелов между символами идентификаторов,

операциями, состоящими из нескольких символов и символами ключевых слов.

10.6. Продолжения строк

Продолжения строк должны отступать на два пробела вправо относительно уровня

размещения начала оператора.

10.7. Длина строки

Длина строки для исходной программы не должна превышать 80 символов.

11. Структура программы

Определения типов и объявления объектов должны следовать в алфавитном

порядке.

Все переменные должны быть объявлены до их использования.

Сведение всех операторов объявления переменных в начало программы облегчает

понимание ее смысла. Это особенно справедливо, если переменным даются

осмысленные имена (например, 'taxrate' [налоговый тариф] вместо 'r').

Включайте в программу комментарии для объяснения того, что обозначают

переменные.

Используйте пустые строки для того, чтобы отделить одну часть функции,

соответствующую некоторому семантическому понятию, от другой.

Для выделения локальной структуры программы операторы выравниваются по

вертикали везде, где это возможно.

Даже если компилятор разрешает использование ассемблера, на практике этого

лучше избегать.

Для читабельности и ясности программы следует структурировать. Каждая

программа должна иметь структуру, подобную той, что показана на рисунке 1.

#define FOUND 1

#define NOTFOUND -1

#define RTEIDLEN 8

#define RTECSTCHKSUM 0x1800

#define RTE_CAT 4

#define RTE CAT SIZE 100

struct rte {

int blockindx[7];

int length;

char ident[RTEIDLEN];

}

int f ind_rte (auto_id_ptr)

char *auto_id_ptr;

{

register union { /* union used so a single pointer can reference */

char *ident ; /* either the ident string for comparison */

struct rte *route; /* or the route structure for advancing */

/* to next route */

} ptr;

register int index; /* Search loop route catalog index */

register int Index of_route; /* Return value */

crwpt.total = 0; /* Set total to NIL */

crwpt.address = NULL; /* Set pointer to NOLL */

Index_of_route = NOTFODND /* Indicate ROOTE NOT FOUND */

if ( !( bit stat1 & RTECSTCHKSUM) /* SPR# 06-999 Use bit_statl */

{

get_cat_base( RTE_CAT );

index = 0;

/* For all routes in EEROM */

for ( ptr.ident = srtecat[0].ident[0]; /* Index moves from 0 */

ptr.ident < Srtecat[ RTE_CAT_SIZE ].ident[0];

/* thru (RTE_CAT_SIZE - 1) */

ptr.route++ /* Step to next rte ident */

)

{

if ( ( cmpstr( ptr.ident, auto_id_jptr, sizeof (ptr.ident ) )

&& ( exist( &rtemap[0], index ) ) /* Check bit map */

)

{

crwpt.total = FOUND; /* Mark have found the rte */

crwpt.address = (int)ptr.route

- (int)Srtecat[0].ident[0]

+ (int)Srtecat[0]; /* Set pointer to found route */

Index_of_route = index; /* Set return value = catalog index */

break; /* No duplicates possible for rte's */

}

index++;

}

}

return( Index_of_route );

}

Рисунок 1. Пример формата кода модуля на языке Си

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]