Управление версиями с Подрывной деятельностью
А очень хороший ресурс для управления исходным кодом в целом. Едва ли конкретный TortoiseSVN, все же.
Это синтаксис C ++, эквивалентный этому:
class texmacs_input_rep : public concrete_struct {
public:
...
};
Это нормальный синтаксис для наследования классов, здесь texmacs_input_rep
наследуется от specific_struct
.
C-Стандарт, с которым вы связались, определяет (6.7.2.1):
struct-or-union-specifier: struct-or-union identifieropt { struct-declaration-list } struct-or-union identifier struct-or-union: struct union
Итак, согласно C это должна быть struct
, за которой следует необязательный идентификатор. , за которым следует {
. Или только struct
, за которой следует идентификатор (предварительное объявление). В любом случае нет места для дополнительного : ...
там.
:
, упомянутый позже в этом параграфе стандарта, касается ширины битового поля, как это;
struct foo {
unsigned a : 4;
unsigned b : 3;
};
Здесь a
и b
] имеют ширину всего 4 и 3 бита, но это другой синтаксис, чем в вопросе.
GCC это не нравится (в режиме C, конечно).
И глядя на спецификацию, я не вижу, что это определено на странице 113 (6.7.2.1), это говорит:
struct-declarator:
declarator
declarator_opt : constant-expression
, что является синтаксисом для битовых полей, подобных этому:
struct blah {
int a : 4;
int b : 4;
};
Итак, вкратце: это не C, это C ++, и это наследование, подобное наследованию классов.
:
в тексте стандарта не является частью конструкции C. Он служит для разделения определяемой вещи и ее определения.
Недопустимо использование :
в объявлении структуры.
Вы уверены, что это C?
Стандартный документ, на который вы ссылаетесь, не описывает такой синтаксис, который я мог видеть.
Это похоже на C ++, где он действительно находится раньше говорили, что структура наследует другую структуру. На странице компиляции TeXmacs рекомендуется использовать компилятор C ++, что (для меня) означает, что он написан на C ++, а не C.
Я быстро просмотрел исходный архив TeXmacs и увидел много файлов ".cpp".