首页 > 解决方案 > Visual C++ 是否提供与 GCC 中的 `__attribute__((alias))` 功能相同的语言结构?

问题描述

__attribute__((alias))方法:

别名(“目标”)

alias 属性导致声明作为另一个符号的别名发出,必须指定。例如,

  void __f () { /* Do something. */; }
  void f () __attribute__ ((weak, alias ("__f")));

定义f为 的弱别名__f。在 C++ 中,必须使用目标的错位名称。如果__f未在同一翻译单元中定义,则为错误。

并非所有目标机器都支持此属性。

标签: c++cgccvisual-c++

解决方案


您可以对 C 执行类似的操作。 x86 和 x64 支持 msvc v19.15。

#include <stdio.h>

void __f() { puts("This function is aliased"); }

void f();

#pragma comment(linker, "/alternatename:f=__f")

int main()
{
    f();
}

在此处查看已编译的演示。

我已经在带有/TC选项的 Visual Studio 2017 中对此进行了测试。


推荐阅读