title: Weird syntax in a module definition (.def) file - "?" and "@"
body: <p>I'm looking at some legacy code for a program, the "exports.def" file in particular, and there are some things i don't quite get about the syntax used in there.</p>
  
  <pre><code>    ??0Hold@c4_ThreadLock@@QEAA@XZ
      ??0c4_Allocator@@QEAA@XZ
      ??0c4_BaseArray@@QEAA@XZ
      ??0c4_BlockedViewer@@QEAA@AEAVc4_Sequence@@@Z
      ??0c4_Bytes@@QEAA@AEBV0@@Z
      ??0c4_Bytes@@QEAA@PEBXH@Z
      ??0c4_Bytes@@QEAA@PEBXH_N@Z
      ??_R0?AVc4_FormatV@@@8   DATA
      ??_R0?AVc4_FormatX@@@8   DATA
      ??_R0?AVc4_GroupByViewer@@@8     DATA
      ??_R0?AVc4_Handler@@@8   DATA
  </code></pre>
  
  <p>The exported variables start after one or more question marks and sometimes "0"s, which the docs don't say anything about, and I have no clue what they stand for. The "@"s here also make no sense to me. Could someone explain this?</p>