1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-19 11:18:40 +08:00
Files
CMake/Tests/CMakeLib/testDebug.cxx
Ben Boeckel b0612796b1 cmDebugTools: add header
This provides a utility macro which prints out:

- location of the call;
- the expression being evaluated; and
- the value of the expression.

Evaluates to the value of the expression.

Inspired by Rust's `dbg!` macro.

See: https://doc.rust-lang.org/stable/std/macro.dbg.html
2023-10-01 06:52:44 -04:00

34 lines
1010 B
C++

#include <iostream>
#include <string>
#include "cmDebugTools.h"
#define check(expr, value) \
do { \
if (expr != value) { \
std::cerr << "Failed to return " #value " for " #expr << std::endl; \
retval = 1; \
} \
} while (false)
int testDebug(int argc, char** const /*argv*/)
{
if (argc != 1) {
std::cout << "Invalid arguments.\n";
return -1;
}
int retval = 0;
check(CM_DBG(true), true);
check(CM_DBG(4), 4);
check(CM_DBG(1.), 1.);
check(CM_DBG('c'), 'c');
check(CM_DBG("literal string"), std::string("literal string"));
std::string str = "std string";
check(CM_DBG(str), "std string");
check(CM_DBG(str.empty()), false);
return retval;
}