<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65190>65190</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
static compound literal
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
alejandro-colomar
</td>
</tr>
</table>
<pre>
Hi,
I was experimenting to see if I could change the lifetime of a compound literal used within a function definition, to make it have static storage duration, instead of automatic.
I'm not sure if ISO C allows this, but it seems GCC does, experimentally.
```c
$ cat foo.c
#include <string.h>
#include <stdio.h>
char *foo(void);
char *foo(void)
{
return (static char []){"foo"};
}
int main(void)
{
puts(memset(foo(), 'g', 2));
}
```
```sh
$ gcc-13 -Wall -Wextra foo.c
$ ./a.out
ggo
```
```c
$ clang-16 -Weverything foo.c
foo.c:8:10: error: expected expression
return (static char []){"foo"};
^
1 error generated.
```
But Clang complains about it. Would you mind supporting this syntax?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVE1v8zYM_jXKhYhhS_mwDz6k6bK9px126JmWaFvvZCmQqLb594PtZv1A8Q5YEMiU-JAPSZHClOzgiVqxfxD7xw1mHkNs0dFP9CaGrQ4uTBg3XTC39g8r5FmUj6I8resPeMEE9HqlaCfybP0AHCARge3hB-iQnQE9oh8IeCRwtie2E0HoAUGH6RqyN-AsU0QHOZGBF8uj9YDQZ6_ZBg-GeuvtLAp5ngkm_JvAMoz4TJAY2WpIHCIOBCZHvEOtT0xoFrbMYZqBxacEhDxO4ANDynEN-q8_4QzoXHhJwKNNs58u80yXiKYEv5_PYAItivfU0bnbJ9fiUK5__baXO9DI0IdQaLifKeu1y4ZAqHPiaP1QjEL99r3a2PBRu6x6xAhCnvoQhKyfgzVCNkI9_DdmBRz_RTaROEcPQtZvJV3tls6YDY4PQsrFhxTHx3eO4-NHMusZJrT-V0zXzEnIeqIpEQtZr4HNUHkGIY-DkMdZlMtR8w3Vvbhftml8L_ag9bZSsH1C52D7RK8c8Uv1d1AIecEiZF6PhiH8muDjZTr0w7Y6zL6fKd7mrh0-ESyyUKdaqFNVCnUCijHERXi9kmYysxAppblhFxv4n7cAX35i_9Ym1UoKA3mKyGSK7zNc1ofMcJ7zWmbTofUJsAtL-xcAT8s830KGyXoDKV-vIa5TP9oE6eYZX4W6bEyrTKMa3FBbHRp1qKq9VJux7fRur7WUfVV2-2Op0WjU-7rWiA12TbOxrSylKpuykkrVO1WY6njY9bUsd11Tll0pdiVNaF3h3PNUhDhsbEqZ2sO-asqNw45cur9msZ1B2y4PSexKZxOndzO27Ki91_jLS7TJ0bUj8zUJdRLyIuRlsDzmrtBhEvIye3n7bK8x_CTNQl6WSJKQlyWYfwIAAP__IL6V9w">