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.

Reply via email to