title: list.h syntax errors that appear only when I use the code in a my C project
body: <p>I am trying to develop some extra functionalities of <a href="https://github.com/ffnord/alfred/blob/master/vis/vis.c" rel="nofollow">https://github.com/ffnord/alfred/blob/master/vis/vis.c</a>
  Since that I am not familiar with Linux lists (list.h), I tried to follow <a href="http://www.roman10.net/2011/07/28/linux-kernel-programminglinked-list/" rel="nofollow" title="this tutorial">this list.h tutorial</a>. To do that I created a very simple test.c file and I imported also the mentioned <a href="https://github.com/ffnord/alfred/blob/master/list.h" rel="nofollow" title="list.h file">list.h file</a> of batman/alfred (by openmesh).</p>
  
  <p>Alfred/batman Github code compiles flawlessly, but in the example code GCC complains about list.h.</p>
  
  <pre><code>Description Resource    Path    Location    Type
  expected ‘;’ before ‘}’ token   list.h  /C_Linux_kernel_lists/src   line 68 C/C++ Problem
  
  
  
  Description Resource    Path    Location    Type
  lvalue required as unary ‘&amp;’ operand    list.h  /C_Linux_kernel_lists/src   line 68 C/C++ Problem
  </code></pre>
  
  <p>So my question is: why GCC does not complain with upstream list.h code and it returns me those messages when I try to use the same code?</p>
  
  <p>Attached source code:</p>
  
  <pre><code>#include &lt;unistd.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  #include "list.h"
  
  struct Person
  {
      char name[30];
      unsigned int weight;
      unsigned char gender;
      struct list_head list;
  };
  
  int main()
  {
      struct Person personList;
      LIST_HEAD_INIT(&amp;personList.list);
  
      struct Person* aNewPersonPointer;
  
      aNewPersonPointer = malloc(sizeof(*aNewPersonPointer));
      strcpt(aNewPersonPointer-&gt;name, "roman10");
      aNewPersonPointer-&gt;weight = 130;
      aNewPersonPointer-&gt;gender = 1;
      INIT_LIST_HEAD(&amp;aNewPersonPointer-&gt;list);
  
  
      list_add(&amp;aNewPersonPointer-&gt;list, &amp;personList.list);
  
      return 0;
  
  
  }
  </code></pre>