title: What does the colon mean in struct declarations in C?
body: <p>Reading the code of TeXmacs, I saw this:</p>
  
  <pre><code>struct texmacs_input_rep : concrete_struct {
  ...
  };
  </code></pre>
  
  <p>What does that mean?</p>
  
  <p>This syntax is defined in the <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf" rel="noreferrer">C standard</a>, p113, but I didn't find the meaning of it, but that's because I don't know how to read grammar rules.</p>
  
  <p>Because <code>concrete_struct</code> is another <code>struct</code>, that contains functions looking like a constructor and a virtual destructor, and because I read elsewhere that classes in C++ are actually <code>struct</code> with public members by default, I guess that this is the way of doing inheritance with <code>struct</code> in C (because it is the C standard...).</p>
  
  <p>Is this correct?</p>