chiark / gitweb /
basic/macros: add STRLEN() to get length of string literal as constant expression
authorThomas Haller <thaller@redhat.com>
Wed, 13 Dec 2017 07:17:07 +0000 (08:17 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 13 Dec 2017 07:17:07 +0000 (08:17 +0100)
commit8f0c163245883ed1e1fb1fb9b7bc65443e5ff01f
treefe69f835512f6de5bf70fe5365dcc1a912801995
parent9c7f04ad328f82e5472d8f948b2d60e8218d9cc4
basic/macros: add STRLEN() to get length of string literal as constant expression

While the compiler likely optimizes strlen(x) for string literals,
it is not a constant expression.

Hence,

  char buffer[strlen("OPTION_000") + 1];

declares a variable-length array. STRLEN() can be used instead
when a constant espression is needed.

It's not entirely identical to strlen(), as STRLEN("a\0") counts 2.
Also, it only works with string literals and the macro enforces
that the argument is a literal.
src/basic/macro.h