title: Multicharacter literal in C and C++
body: <p>I didn't know that C and C++ allow <a href="http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage%2Fref%2Fclrc02ccon.htm" rel="noreferrer"><code>multicharacter literal</code></a>: not 'c' (of type <em>int</em> in C and <em>char</em> in C++), but 'tralivali' (of type <em>int</em>!)</p>
  
  <pre><code>enum
  {
      ActionLeft = 'left',
      ActionRight = 'right',
      ActionForward = 'forward',
      ActionBackward = 'backward'
  };
  </code></pre>
  
  <p>Standard says:</p>
  
  <blockquote>
    <p>C99 6.4.4.4p10: "The value of an
    integer character constant containing
    more than one character (e.g., 'ab'),
    or containing a character or escape
    sequence that does not map to a
    single-byte execution character, is
    implementation-defined."</p>
  </blockquote>
  
  <p>I found they are widely used in <a href="http://www.terathon.com/wiki/index.php/Simple_Actions_-_%27Hello_World%27_redux" rel="noreferrer">C4 engine</a>. But I suppose they are not safe when we are talking about platform-independend serialization. Thay can be confusing also because look like strings. So what is multicharacter literal's scope of usage, are they useful for something? Are they in C++ just for compatibility with C code? Are they considered to be a bad feature as <em>goto</em> operator or not?</p>