On 29/2/24 08:59, Daniel P. Berrangé wrote:
On Thu, Feb 29, 2024 at 07:03:35AM +0000, Paz Offer wrote:
Hi,
I am trying to build my code with QEMU and getting compilation error according
to the ISO C90 standard:
const size_t buf_size = 31;
char buffer[buf_size + 1];
error: ISO C90 forbids array ‘buffer’ whose size can’t be evaluated
[-Werror=vla]
I noticed that the code builds with '-std=gnu11', which is newer then
C90, so this is not clear to me why I get this error.
Where is the correct place to specify the language version for this?
QEMU has set compiler flags to explicitly /forbid/ use of variable
sized arrays on the stack, as it is a known dangerous language
feature. You must refactor your changes to avoid this by using either
a statically sized array, or allocating on the heap.
If you array has a fixed size, you could use a definition, so the
proprocessor can evaluate the buffer size:
#define BUF_SIZE 31
char buffer[BUF_SIZE + 1];
Regards,
Phil.