Предоставляет ли Visual C ++ языковую конструкцию с той же функциональностью, что и `__attribute __ ((alias))` в GCC? - PullRequest
0 голосов
/ 19 ноября 2018

__attribute__((alias)) означает:

псевдоним ("цель")

Атрибут alias вызывает объявление в качестве псевдонима для другого символа, который должен быть указан. Например,

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

определяет f как слабый псевдоним для __f. В C ++ необходимо использовать искаженное имя для цели. Это ошибка, если __f не определен в той же единице перевода.

Не все целевые машины поддерживают этот атрибут.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете сделать что-то подобное для 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();
}

См. Скомпилированную демонстрацию здесь .

Я протестировал это в Visual Studio 2017 с параметром /TC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...