首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用gcc模仿Microsoft版本的__FUNCTION__?

在使用GCC编译器时,如果你想模仿Microsoft版本的FUNCTION宏,可以使用以下方法:

  1. 使用__func__宏:

在GCC编译器中,你可以使用__func__宏作为等价于Microsoft版本的FUNCTION的宏。__func__宏在C99和C++11标准中被引入,它表示当前函数的名称,与Microsoft版本的FUNCTION类似。

示例代码:

代码语言:c
复制
#include<stdio.h>

void test_function() {
    printf("Current function: %s\n", __func__);
}

int main() {
    test_function();
    return 0;
}
  1. 使用__PRETTY_FUNCTION__宏:

在C++中,你还可以使用__PRETTY_FUNCTION__宏来模仿Microsoft版本的FUNCTION。与__func__类似,__PRETTY_FUNCTION__宏表示当前函数的名称,包括类型和命名空间信息。

示例代码:

代码语言:cpp
复制
#include<iostream>

void test_function() {
    std::cout << "Current function: " << __PRETTY_FUNCTION__<< std::endl;
}

int main() {
    test_function();
    return 0;
}

请注意,这些方法在GCC编译器中适用,但在其他编译器中可能不适用。在其他编译器中,你可能需要查找相应的替代方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过安装scl软件集,使用版本gcc方法

SCL软件集(Software Collections)是为了给 RHEL/CentOS 用户提供一种以方便、安全地安装和使用应用程序和运行时环境多个(而且可能是更新版本方式,同时避免把系统搞乱...有时候,我们需要在某些机器上编译软件(如在centos6上编译alisql),官方文档会告诉我们先安装scl软件集,然后切换到高版本gcc下面执行编译操作。...这里,我们以centos7上编译某些版mysql5.6为例,根据官方文档,需要先按照高版本gcc(centos7默认4.8版本gcc太低了)。...list all --enablerepo='centos-sclo-rh' 查看从 SCL 中安装列表: scl –list 安装5.3版本gccgcc-c++ yum install devtoolset...-4-gcc.x86_64 devtoolset-4-gcc-c++.x86_64 切换前,我们先看下当前gcc版本gcc –-version ?

3.3K20
  • 如何选择合适 django 版本使用

    首先,是不是需要一个地方来查看 django 有没有新版本发布呢,请看: https://www.djangoproject.com/download/ 然后,该如何选择一个合适版本,是一股脑装最新版...(很肯能存在一些小问题,如:与其他库兼容性问题)还是有方法可寻呢,请看:     一般来说我们都选择在长期维护中 django 版,即 LTS(Long Term Support) 版本。...官网有个图,很明显看到某些版本标记了 LTS: 从上图可以看出目前在维护中 只有两个版本,3.2 版本(还没发布)将要加入 LTS: 1.11(Last version to support Python...2.7.) 2.2(我们 python3 就用 2.2 了,跟 1.11 语法上有些变化,比如:路由匹配模式) 安装时候指定版本安装就可以安装 LTS 版本(pip install django=

    3K40

    如何使用KnockKnock枚举OneDrive和Microsoft Teams有效用户

    KnockKnock是一款功能强大用户信息枚举工具,在工具旨在通过查询OneDrive和/或Microsoft Teams来识别、枚举和验证潜在有效用户名。...该工具使用纯Python 3开发,并基于被动方法实现其功能,该工具还可以输出/创建通过通过Microsoft Teams枚举识别出来遗留Skype用户列表。...5、Teams选项需要一个Bearer令牌,脚本会自动删除令牌开头和结尾部分,以便只使用所需内容; 如何获取你Bearer令牌?...如需获取你Bearer令牌,你首先需要在浏览器上安装Cookie Manager插件,并通过浏览器登录到你自己Microsoft Teams。...接下来,查看与当前网页(teams.microsoft.com/)相关Cookie。 你要查找Cookie是针对.teams.microsoft.com域,标题为“authtoken”。

    14510

    你想知道,Microsoft Edge这种巨型项目是如何进行版本管理吗?

    不知道你有没有好奇过,像Microsoft Edge这种巨型项目是如何进行版本管理? 当然关于这个问题我就需要先解释一下,因为Edge是多么巨型一个项目很多人可能并没有概念。...那么再次回到开始问题,你有好奇过像Edge这种巨型项目是如何进行版本管理吗? 今天我们就来揭秘一下。...Beta版本再次经历6周迭代之后,该修Bug基本也就都修完了,那么当前Beta版可以说是一个相当稳定版本,它会转变成Microsoft Edge正式版发布上线。...这也是为什么说,Edge使用这套版本管理和发布规则(也是Chromium使用规则)相当成熟与科学,它保证了每一个发布出去正式版本都是非常稳定,并且每一个版本也都有充足生命周期。...现在你知道,像Edge这种巨型项目是如何进行版本管理了吧。 介绍完了关于Edge这些知识点,接下来再跟大家讲一讲现在移动端Edge现状吧。

    1.1K30

    【嵌入式】C语言程序调试和宏使用技巧

    调试相关宏 在Linux使用gcc编译程序时候,对于调试语句还具有一些特殊语法。...gcc编译过程中,会生成一些宏,可以使用这些宏分别打印当前源文件信息,主要内容是当前文件、当前运行函数和当前程序行。...__); printf("line: %d\n", __LINE__); return 0; } 2. # 字符串化操作符 在gcc编译系统中,可以使用#将当前内容转换成字符串。...条件编译调试语句 在实际开发中,一般会维护两种源程序,一种是带有调试语句调试版本程序,另外一种是不带有调试语句发布版本程序。然后根据不同条件编译选项,编译出不同调试版本和发布版本程序。...如何将一个语句封装成一个宏,在程序中常常使用do…while(0)形式。

    67510

    如何优雅使用Git版本控制工具

    Git创建仓库 git init  Git 使用 git init 命令来初始化一个 Git 仓库,Git 很多命令都需要在 Git 仓库中运行,所以 git init 是使用 Git 第一个命令...[root@localhost ~]# mkdir gitrepo [root@localhost ~]# git init gitrepo 初始化空 Git 版本库于 /root/gitrepo/...git fetch  一旦远程主机版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。...如果远程主机版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。...git push --force origin  上面命令使用--force选项,结果导致远程主机上更新版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用--force选项。

    1.3K40

    如何使用CanaryTokenScanner识别Microsoft Office文档中Canary令牌和可疑URL

    关于CanaryTokenScanner CanaryTokenScanner是一款功能强大Canary令牌和可疑URL检测工具,该工具基于纯Python开发,可以帮助广大研究人员快速检测Microsoft...在网络安全领域中,保持警惕和主动防御是非常有效。很多恶意行为者通常会利用Microsoft Office文档和Zip压缩文件嵌入隐藏URL或恶意宏来初始化攻击行为。...CanaryTokenScanner这个Python脚本旨在通过仔细审计Microsoft Office文档和Zip文件内容来检测潜在威胁,从而降低用户无意中触发恶意代码风险。...和Zip文件,脚本会将内容解压缩到临时目录中,然后使用正则表达式扫描这些内容以查找URL,搜索潜在入侵迹象; 3、忽略某些URL:为了最大限度地减少误报,该脚本包含了一个要忽略域名列表,可疑过滤掉...) 然后将脚本放到一个可访问位置,并提供可执行权限即可: cd CanaryTokenScanner chmod +x CanaryTokenScanner.py 工具使用 python

    14410

    使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 兼容性问题

    使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 兼容性问题 发布于 2018-07-21 13:51...目标版本决定了我们能使用最新 API,最低版本决定了我们需要支持最低版本 Windows 10。 ? ▲ 图中目标版本为 17134,最低版本为 14393。...使用此包,你需要将 UWP 目标版本设为 17134,支持 最低版本只能到 14393,不能更低。...不过没有结束,在需要使用到新版本 Windows 10 控件 XAML 文件中,需要添加命名空间前缀: xmlns:controls="using:Microsoft.UI.Xaml.Controls...于是,一些广泛使用 UWP 应用终于不用各种自己写控件来兼容低版本 Windows 10 了。 当然除了在 XAML 中,也可以在 C# 代码中使用库中新 API。

    3.4K10

    如何在实时操作系统(RTOS)中使用GCC栈溢出保护(SSP)功能

    ,中间插入了较多作者自己理解,主要介绍如何在嵌入式实时操作系统(RTOS)中使用GCC栈溢出保护功能(Stack Smashing Protection,简称SSP),特别是编译器本身不支持情况下...二、GCC栈溢出保护工作原理 GCC栈溢出保护(SSP)是在函数中插入一个额外变量(stack canary),该变量位于函数返回地址所在内存后面,函数进入时候该变量被赋为特定值,函数返回前判断该变量值有没有改变...不过,SSP会增加运行期消耗,表现为使用栈内存增加,CPU执行指令增多。可以考虑在debug版本中开启该功能,release版本中关闭该功能。...三、开启GCC栈溢出保护 在编译选项中增加-fstack-protector-all、-fstack-protector-strong、-fstack-protector中任何一个即可开启GCC栈溢出保护...那么如何解决呢? 可以先通过下面的命令生成空静态库,然后在gcc链接选项(一般定义为LDFLAGS)中通过-L添加指向libssp.a和libssp_nonshared.a所在目录。

    3.3K31

    【企业架构框架】如何使用 TOGAF 版本 10

    我们退后一步,从从业者角度看待在组织中开展企业架构工作。但是,本文区分了不同 TOGAF 10 受众和用例,并认为组织内已经有正在进行企业架构活动。本文有助于了解如何使用全新版本。...使用 TOGAF 版本,组织总是不得不删减一些零碎东西来补充他们现有的流程和工件。TOGAF 10 模块化结构使这变得更加容易。Open Group 将此称为“主题支持”。...除了上述参数之外,架构师工作角色和用例对于决定是否和如何使用标准。例如,The Open Group 提到了与 TOGAF 10 相关四个角色。...TOGAF 10 模块化结构允许不同从业者找到他们需要东西旧 TOGAF 版本具有相当单一结构。如果您想申请 ADM,您必须阅读非常冗长 TOGAF 标准一半。...- TOGAF 领导者建立和发展 EA 能力指南 - 信息架构:Cus前主数据管理 (C-MDM) - 架构项目管理 如何使用 TOGAF 10 示例 让我们考虑一些人可能想要使用 TOGAF 10

    80430

    如何在 Mac 上使用 pyenv 运行多个版本 Python

    ,但我如何在我 Mac 上与现有的 Python 版本一起运行?...我可以从源码克隆并编译它,但是我更喜欢通过 Homebrew 包管理器来管理软件包: $ brew install pyenv 为了通过 pyenv 使用 Python 版本,必须了解 shell ...如果是 zsh,请使用上面的命令。如果你使用 Bash,请将 ~/.zshrc 更改为 ~/.bashrc。如果你想了解更多信息,可以在 pyenv README 中深入研究路径设置。...使用 pyenv 管理 Python 版本 现在 pyenv 已经可用,我们可以看到它只有系统 Python 可用: $ pyenv versions system 如上所述,你绝对不想使用版本(阅读更多有关信息...现在 pyenv 已正确设置,我希望它能有我经常使用几个不同版本 Python。

    4.9K10

    如何使用kms工具激活vol版本Windows和Office

    /kms.sh uninstall 如何使用KMS服务激活? KMS 服务,用于在线激活 VOL 版本 Windows 和 Office。...激活前提是你系统是批量授权版本,即 VL 版,一般企业版都是 VL 版。而 VL 版本镜像一般内置 GVLK key,用于 KMS 激活。...下面列表里面含有的产品 VL 版本或者能使用 key 进入 KMS 通道产品,都支持使用 KMS 激活,下面是支持kms产品: Office 2019 & Office 2016:https://...cmd 查看系统版本,命令如下: wmic os get caption 使用管理员权限运行 cmd 安装从上面列表得到 key,命令如下: slmgr /ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx...使用管理员权限运行 cmd 手动激活系统,命令如下: slmgr /ato Office激活 关于 Office 激活,要求必须是 VOL 版本,否则无法激活。

    4.1K30

    VC和GCC内成员函数指针实现研究(一)

    VC只是提了下单继承、多继承和虚继承实现方案不同,GCC没有提及,所以就专门稍微深入分析研究下他们实现机制。 以下所有代码都使用了64位编译,所以32位编译和运行结果可能有略微差异。...由此来保证调用是子类里成员函数。 好吧运行结果还是有必要贴一下 image.png 图四: VC单继承测试代码执行结果 GCC单继承成员函数指针实现 接下来就是GCC了。...往下看函数调用: image.png 图六:GCC单继承下成员函数指针调用 可以看到,GCC成员函数指针和VC设计明显不同。...所以和VC不同是,VCvcall是长跳转,而gcc这种写法是短跳转。按个人理解,GCC方式更利于CPU指令流水线指令缓存。...下一篇 VC和GCC成员函数指针实现研究(二)

    84530

    VC和GCC内成员函数指针实现研究(一)

    VC只是提了下单继承、多继承和虚继承实现方案不同,GCC没有提及,所以就专门稍微深入分析研究下他们实现机制。 以下所有代码都使用了64位编译,所以32位编译和运行结果可能有略微差异。...好吧运行结果还是有必要贴一下 图片 图四: VC单继承测试代码执行结果 GCC单继承成员函数指针实现 接下来就是GCC了。GCC是怎么实现呢?同样还是祭出大杀器,反汇编。...往下看函数调用: 图片 图六:GCC单继承下成员函数指针调用 可以看到,GCC成员函数指针和VC设计明显不同。...所以和VC不同是,VCvcall是长跳转,而gcc这种写法是短跳转。按个人理解,GCC方式更利于CPU指令流水线指令缓存。...下一篇 VC和GCC成员函数指针实现研究(二)

    52220

    动态库学习

    大家好,又见面了,我是你们朋友全栈君。 总结一:动态库 前言 我们知道程序编译链接经常使用动态,同时我们可能还知道,动态库时程序运行时加载。...但是动态库到底有什么作用,如何生成、如何加载等,我们却很少关注。接下来,我给大家做一个简单介绍。...在执行过程中需要该动态库 使用动态库生成目标文件较小 对于工程中比较共通源码文件,比如多个进程使用同一个模块源码,我们最好将其制作成动态库,以节省系统空间。...我们动态库在整个内存空间是有一份,而每个进程都有自己虚拟空间,虚拟空间会使用匿名映射(mmap使用MAP_PRIVATE方式进行映射),使自己进程与动态库进行关联。...__); } void printExtern() { printInter(); printf("%s\n", __FUNCTION__); } 输入指令 gcc -fPIC -c

    83520

    VC和GCC成员函数指针实现研究(三)

    接上一篇 VC和GCC内成员函数指针实现研究(二) 虚继承 终于到最后虚继承了。...image.png 图十八:GCC多重虚继承直接函数调用 image.png 图十九:GCC多重虚继承空虚基类函数指针调用 首先,GCC直接调用和调用空虚基类成员函数时,cx直接是传入子类地址...GCC使用了一个odd优化,合并了指针和索引,其实就是用的上文里提到那种方法(用x86架构函数地址至少对齐到2来做优化,最后一位当flag来用)。...by yuanzhu 我意思是说,理论上有些编译器是这么实现(可能老gcc也这么实现),但是现在gcc已经使用vtable里记录和静态分析来实现计算offset了。...我并没有找到gcc会(真正)使用这个指针(它不为0)情况。如果有,可否贴一个sample? by owent 看来不是沟通误会了。。

    81610
    领券