gpt4 book ai didi

c++ - 如何在宏 C++ 中使用 cout

转载 作者:行者123 更新时间:2023-11-28 00:59:16 29 4
gpt4 key购买 nike

我在头文件中有以下用于测量时间的宏:

#define TIMER_START(x) double ___timer__##x = (double) getTickCount(); 
#define TIMER_END(x) ___timer__##x = (getTickCount() - ___timer__##x) *1000 / getTickFrequency(); cout << "t" << ##x << ": " << ___timer__##x << endl;

问题是,当我使用这个头文件时,cout 没有定义。有没有选择以这种方式使用它?我试过指定命名空间,但没有成功。 ostream::和 std::都不包含 cout 的定义。

PS:我在 MSVS2010 工作。

最佳答案

名称 cout 必须在您调用宏的位置可见。写作

TIMER_START(0);

就像写作一样

double ___timer__0 = (double) getTickCount();;

并且适用相同的可见性规则。

我怀疑将 cout 更改为 std::cout 会解决问题。当然,您需要在调用宏的任何源文件中包含适当的 header 。

其他一些问题:

以下划线开头的标识符保留给实现使用。我相信 C++ 还保留带有嵌入式双下划线的标识符。您试图避免与用户定义的标识符发生冲突,但您冒着与编译器定义的或库定义的标识符发生冲突的风险。它可能不会导致任何可见的问题,但您应该使用其他一些唯一的前缀。

宏定义中的结尾分号是多余的;您将在调用它们时提供它们:

TIMER_START(0);
TIMER_END(0);

关于c++ - 如何在宏 C++ 中使用 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640198/

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