# lv_check_arg.h (/api/public/debugging/lv_check_arg_h)



<ApiSummary macros="10" />

Macros [#macros]

<ApiMember kind="macro" name="LV_LIKELY" file="public/debugging/lv_check_arg.h" line="28" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L28">
  LV_LIKELY [#lv_likely]

  ```c title=" " lineNumbers=1
  #define LV_LIKELY(x) \
      (x)
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_UNLIKELY" file="public/debugging/lv_check_arg.h" line="29" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L29">
  LV_UNLIKELY [#lv_unlikely]

  ```c title=" " lineNumbers=1
  #define LV_UNLIKELY(x) \
      (x)
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_ASSERT_HANDLER_" file="public/debugging/lv_check_arg.h" line="54" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L54">
  LV_CHECK_ARG_ASSERT_HANDLER_ [#lv_check_arg_assert_handler_]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_ASSERT_HANDLER_ do {} while(0)
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_LOG_" file="public/debugging/lv_check_arg.h" line="72" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L72">
  LV_CHECK_ARG_LOG_ [#lv_check_arg_log_]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_LOG_(cond_str, msg) \
      do {} while(0)
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_LOG_FORMAT_" file="public/debugging/lv_check_arg.h" line="73" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L73">
  LV_CHECK_ARG_LOG_FORMAT_ [#lv_check_arg_log_format_]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_LOG_FORMAT_(cond_str, format, ...) \
      do {} while(0)
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_INTERNAL_" file="public/debugging/lv_check_arg.h" line="80" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L80">
  LV_CHECK_ARG_INTERNAL_ [#lv_check_arg_internal_]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_INTERNAL_(cond, cond_str, action_on_fail, msg) \
      if(LV_UNLIKELY(!(cond))) { \
              LV_CHECK_ARG_LOG_(cond_str, msg); \
              LV_CHECK_ARG_ASSERT_HANDLER_; \
              action_on_fail; \
          } else {}
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_FORMAT_INTERNAL_" file="public/debugging/lv_check_arg.h" line="87" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L87">
  LV_CHECK_ARG_FORMAT_INTERNAL_ [#lv_check_arg_format_internal_]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_FORMAT_INTERNAL_(cond, cond_str, action_on_fail, format, ...) \
      if(LV_UNLIKELY(!(cond))) { \
              LV_CHECK_ARG_LOG_FORMAT_(cond_str, format, __VA_ARGS__); \
              LV_CHECK_ARG_ASSERT_HANDLER_; \
              action_on_fail; \
          } else {}
  ```
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG" file="public/debugging/lv_check_arg.h" line="120" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L120">
  LV_CHECK_ARG [#lv_check_arg]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG(cond, action_on_fail) \
      LV_CHECK_ARG_INTERNAL_(cond, #cond, action_on_fail, "")
  ```

  Check that a condition is true. If the condition is false, log a warning and execute `action_on_fail` (e.g. `return`, `return val`, `break`).

  Can be disabled entirely by setting LV\_USE\_CHECK\_ARG to 0 in lv\_conf.h. If LV\_CHECK\_ARG\_ASSERT\_ON\_FAIL is 1, LV\_ASSERT\_HANDLER is also invoked before the action. Log output requires LV\_USE\_LOG to be enabled; if LV\_USE\_LOG is 0 no output is produced regardless of LV\_CHECK\_ARG\_LOG\_MODE.

  Example:

  ```c title=" " lineNumbers=1
  LV_CHECK_ARG(ptr != NULL, return);
  ```

  <span className="sr-only">
    Parameters
  </span>

  | Name             | Description                                                          |
  | ---------------- | -------------------------------------------------------------------- |
  | `cond`           | condition to check                                                   |
  | `action_on_fail` | statement to execute on failure (e.g. `return`, `return 0`, `break`) |
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_MSG" file="public/debugging/lv_check_arg.h" line="136" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L136">
  LV_CHECK_ARG_MSG [#lv_check_arg_msg]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_MSG(cond, action_on_fail, msg) \
      LV_CHECK_ARG_INTERNAL_(cond, #cond, action_on_fail, " " msg)
  ```

  Same as LV\_CHECK\_ARG but a message is appended to the log. The message is only used when LV\_CHECK\_ARG\_LOG\_MODE is set to VERBOSE.

  Example:

  ```c title=" " lineNumbers=1
  LV_CHECK_ARG_MSG(ptr != NULL, return, "pointer must not be NULL");
  ```

  <span className="sr-only">
    Parameters
  </span>

  | Name             | Description                                                          |
  | ---------------- | -------------------------------------------------------------------- |
  | `cond`           | condition to check                                                   |
  | `action_on_fail` | statement to execute on failure (e.g. `return`, `return 0`, `break`) |
  | `msg`            | string literal appended to the log message                           |
</ApiMember>

<ApiMember kind="macro" name="LV_CHECK_ARG_FORMAT_MSG" file="public/debugging/lv_check_arg.h" line="153" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/include/lvgl/debugging/lv_check_arg.h#L153">
  LV_CHECK_ARG_FORMAT_MSG [#lv_check_arg_format_msg]

  ```c title=" " lineNumbers=1
  #define LV_CHECK_ARG_FORMAT_MSG(cond, action_on_fail, format, ...) \
      LV_CHECK_ARG_FORMAT_INTERNAL_(cond, #cond, action_on_fail, " " format, __VA_ARGS__)
  ```

  Same as LV\_CHECK\_ARG but a printf-style message is appended to the log. The message is only used when LV\_CHECK\_ARG\_LOG\_MODE is set to VERBOSE.

  Example:

  ```c title=" " lineNumbers=1
  LV_CHECK_ARG_FORMAT_MSG(len > 0, return -1, "len=%d", (int)len);
  ```

  <span className="sr-only">
    Parameters
  </span>

  | Name             | Description                                                          |
  | ---------------- | -------------------------------------------------------------------- |
  | `cond`           | condition to check                                                   |
  | `action_on_fail` | statement to execute on failure (e.g. `return`, `return 0`, `break`) |
  | `format`         | format string literal appended to the log message                    |
  | `...`            | arguments of `format`; at least one is required                      |
</ApiMember>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lv_conf_internal.h&#x22;, &#x22;lv_log.h&#x22;, &#x22;lv_assert.h&#x22;]" includedBy="[&#x22;lv_check_obj.h&#x22;, &#x22;lvgl.h&#x22;]" transitiveIncludes="[&#x22;lv_mem.h&#x22;, &#x22;lv_types.h&#x22;]" />
