3

我想assert在 Visual Studio 2019 中将 C 与 C++20 一起使用(使用 编译std:c++latest),但我找不到要导入的正确模块。是否已经支持,如果支持,我应该导入哪个模块?

import std.core;
constexpr auto f()
{
    return "Hello world!";
}
int main()
{
    static_assert(f() == "Hello world!"); // Compile time assert works.
    //assert(f() == "Hello world!"); // How to import runtime assert()?
    //[[assert: f() == "Hello world!"]] // Contracts were removed from cpp20.
    std::cout << f();
}

输出:世界你好!

4

2 回答 2

4

模块不包含宏。导入遗留模块头文件将引入宏,但import std.core;或任何东西永远不会引入宏。

于 2019-12-04T01:35:08.877 回答
3

模块可以与头文件一起使用。C++ 源文件可以导入模块以及#include 头文件。我建议你可以尝试添加#include <assert.h>

于 2019-12-04T08:12:20.540 回答