c++ 宏 类名 加上__FUNCTION__##__LINE__
时间: 2024-02-12 18:01:44 浏览: 127
在C++中,可以使用宏定义来获取类名加上`__FUNCTION__`和`__LINE__`的组合。下面是一个示例代码:
```cpp
#include <iostream>
#define CONCAT(a, b) a##b
#define GET_CLASS_NAME(className) #className
#define LOG(className) \
std::cout << GET_CLASS_NAME(className) << "::" << __FUNCTION__ << "::" << __LINE__ << std::endl;
class MyClass {
public:
void myFunction() {
LOG(MyClass);
}
};
int main() {
MyClass obj;
obj.myFunction();
return 0;
}
```
这段代码定义了一个宏`LOG`,它会输出类名、函数名和行号的组合。在`MyClass`类的`myFunction`函数中,我们调用了`LOG(MyClass)`,它会输出`MyClass::myFunction::行号`。
输出结果为:
```
MyClass::myFunction::14
```
相关问题
c++ 宏 类名后加上__FUNCTION__##__LINE__
在C++中,可以使用宏定义来在类名后加上`__FUNCTION__##__LINE__`。这样可以在编译时将`__FUNCTION__`和`__LINE__`的值连接在一起,形成一个新的标识符。
以下是一个示例代码:
```cpp
#include <iostream>
using namespace std;
#define ADD_LINE(class_name) class_name##__FUNCTION__##__LINE__
class ADD_LINE(MyClass) {
public:
void printClassName() {
cout << "Class name: " << __FUNCTION__ << endl;
}
};
int main() {
ADD_LINE(MyClass) obj;
obj.printClassName();
return 0;
}
```
输出结果为:
```
Class name: printClassName
```
在上面的示例中,我们定义了一个宏`ADD_LINE`,它将`class_name`和`__FUNCTION__`以及`__LINE__`连接在一起。然后我们使用这个宏来定义一个类名为`MyClass__FUNCTION__LINE__`的类。在`printClassName`函数中,我们输出了`__FUNCTION__`的值,即函数名。
阅读全文