首页 > 编程语言 >将C++代码文件路径、行号、函数名称等打包到#pragma message输出的方法

将C++代码文件路径、行号、函数名称等打包到#pragma message输出的方法

时间:2024-04-24 09:44:04浏览次数:35  
标签:__ code STRING C++ Add ConsoleApplication36 pragma message GEN

#include <iostream>

#define __GEN_STRING_IMPL(x) #x
#define __GEN_STRING(x) __GEN_STRING_IMPL(x)
#define __GEN_LOCATION_STRING() __FILE__ "(" __GEN_STRING(__LINE__) "):"

class CTestObject
{
public:
    void print1()
    {
        #pragma message(__GEN_LOCATION_STRING() "Add code in function:" __FUNCTION__)
    }

    void print2()
    {
        #pragma message(__GEN_LOCATION_STRING() "Add code in function:" __FUNCTION__)
    }
};

int main()
{
    std::cout << "Hello World!\n";
}

       如这个代码所示,只要在编译时,在输出窗口中将会输出代码路径和对应的信息,双击该信息即可跳转到对应位置(Visual Studio 2022有效)。可以根据需要添加其它信息。也可以根据对应的IDE,对具体格式进行对应的修改。

1>ConsoleApplication36.cpp
1>F:\Projects\ConsoleApplication36\ConsoleApplication36.cpp(12):Add code in function:CTestObject::print1
1>F:\Projects\ConsoleApplication36\ConsoleApplication36.cpp(17):Add code in function:CTestObject::print2
1>ConsoleApplication36.vcxproj -> F:\Projects\ConsoleApplication36\x64\Debug\ConsoleApplication36.exe

 

标签:__,code,STRING,C++,Add,ConsoleApplication36,pragma,message,GEN
From: https://www.cnblogs.com/bodong/p/18154397

相关文章

  • C++ Vector fundamental
    C++Vectorfundamental主要内容包括:引入头文件,如何创建并初始化,访问容量,增查删改;1.包含头文件#include<vector>#include<iostream>2.创建vectorvector<int>v;vector<char>v1;vector<string>v2;3.初始化一维vector初始化后不进行赋值,直接访问会报错;3.1ve......
  • C++ 访问说明符详解:封装数据,控制访问,提升安全性
    C++访问说明符访问说明符是C++中控制类成员(属性和方法)可访问性的关键字。它们用于封装类数据并保护其免受意外修改或滥用。三种访问说明符:public:允许从类外部的任何地方访问成员。private:仅允许在类内部访问成员。protected:允许在类内部及其派生类中访问成员。示例:cla......
  • 前端编程另一种数据传输方法,window.postMessage 技术
    window.postMessage是一项非常实用的浏览器技术,它允许不同窗口或框架之间进行安全的消息传递。一、技术介绍window.postMessage可以在不同的源之间传递消息,包括跨域的情况。这为跨文档通信提供了一种强大而灵活的方式。二、使用方法举例假设有两个页面,一个是发送方页面send......
  • 深度解读《深度探索C++对象模型》之C++虚函数实现分析(一)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。假如有这样的一段代码,代码中定义了一个Object类,类中有一个成员函数print,通过以下的两种调用方式调用:Objectb;Object*p=newObjec......
  • C++中的原子操作
    一、概述C++11提供了一个原子类型std::atomic<T>,通过这个原子类型管理的内部变量就可以称之为原子变量,我们可以给原子类型指定bool、char、int、long、指针等类型作为模板参数(不支持浮点类型和复合类型)。原子指的是一系列不可被CPU上下文交换的机器指令,这些指令组合在一起......
  • 无root权限,解决conda环境的报错ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6:
    网上的方法都需要sudo或者root权限,但是服务器多是实验室公用,没有ruuto权限,因此更好的办法是通过conda只改自己虚拟环境的环境变量。问题原因问题的根本原因是Linux系统没有GLIBCXX_3.4.30动态链接库。这个库和gcc版本有关。因此要么你更换版本,要么找一个别的so链接到这个连接......
  • feign调用接口报错No qualifying bean of type '***HttpMessageConverters' available
    在整合springcloudgeateway时,调用了feign接口,报错Noqualifyingbeanoftype'org.springframework.boot.autoconfigure.http.HttpMessageConverters'available报错信息feign.codec.EncodeException:Noqualifyingbeanoftype'org.springframework.boot.autocon......
  • C++ Standard Library
    C++StandardLibraryarchitecure&sourcesc++官网C标准库->一个一个单一的函数function->彼此几乎无关联c++标准库->六个部分->彼此之间有紧密的关联c++标准库主要是用模板做出来的泛型编程(GenericProgramming)使用模板作为主要工具来编写程序->templates模......
  • C++开发学习
    C++第三方库使用如何在VS中配置第三方C++库教程在程序的源文件(如.c和.cpp文件)编辑阶段,为了使用第三方库,我们一般会在编辑器中使用#include指令来包含库的头文件(.h或.hpp文件)。编写好程序的源文件后,在编译阶段,编译器会根据头文件中声明的函数、类等信息去寻找这个函数......
  • C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造
    C++构造函数构造函数是C++中一种特殊的成员函数,当创建类对象时自动调用。它用于初始化对象的状态,例如为属性分配初始值。构造函数与类同名,且没有返回值类型。构造函数类型C++支持多种类型的构造函数,用于满足不同的初始化需求:默认构造函数:不带参数的构造函数,通常用于初......