title: Why does GCC's __attribute__((...)) syntax use double parentheses?
body: <p>The <a href="http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html" rel="noreferrer">documentation for GCC's <code>__attribute__((...))</code> syntax</a> indicates that attributes must be surrounded by double parentheses, but does not give a rationale for this design decision.</p>
  
  <p>What practical reason would have caused GCC's designers to require this? Does it have anything to do with the preprocessor's handling of double parentheses?</p>