gpt4 book ai didi

c++ - 使用 `__DATE__` 或 `__TIME__` 是否违反单一定义规则?

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:47 25 4
gpt4 key购买 nike

在头文件中使用 __DATE____TIME__ 时,包含该头文件的预处理器结果可能会有所不同。

在什么情况下在头文件中使用 __DATE____TIME__ 会违反单一定义规则?

作为后续:assert header 是否违反了单一定义规则?

最佳答案

如果 __TIME__ 为不同的翻译单元给出不同的结果,那么它不得用于跨翻译单元需要相同结果的上下文中。这意味着例如将对象(例如类成员)初始化为 __TIME__,其中初始化程序是包含在多个翻译单元中的 header 的一部分,这将是有问题的。

__DATE__ 如果您开始全新构建,则不太可能为不同的翻译单元提供不同的结果,但是增量构建,即仅重新编译已更改文件的构建,确实可能成为问题

assert 是一个宏,根据包含其 header 时 NDEBUG 的定义方式进行不同的扩展,因此整个项目必须就是否 NDEBUG< 达成一致 应该被定义,或者在头文件中定义的函数应该避免使用 assert

关于c++ - 使用 `__DATE__` 或 `__TIME__` 是否违反单一定义规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41258104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com