问题标签 [name-mangling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
299 浏览

haskell - 对 GHC 分析器输出中的类型类函数进行拆解

在分析用 GHC 编写的 Haskell 程序时,类型类函数的名称在 .prof 文件中被修改,以区分一个实例的实现与另一个实例的实现。我怎样才能解开这些名称以找出它是哪种类型的实例?

例如,假设我有以下程序,其中 typesFastSlow都实现Show

我编译-prof -auto-all -caf-all并运行+RTS -p. 在生成的 .prof 文件中,我看到最高成本中心是:

在树中,我同样看到(省略不相关的行):

我如何确定show_an9Slow' 的实现show而不是Fast'?

0 投票
6 回答
25275 浏览

c++ - 关于 C++ 中名称修饰的问题

我正在尝试学习和理解 C++ 中的名称修饰。这里有一些问题:

(1) 来自devx

当全局函数重载时,为每个重载版本生成的重命名名称是唯一的。名称修饰也适用于变量。因此,具有相同用户给定名称的局部变量和全局变量仍然会得到不同的重命名。

除了重载函数和同名全局变量和局部变量之外,还有其他使用名称修饰的示例吗?

(2) 来自维基

当语言允许不同的实体使用相同的标识符命名时,只要它们占用不同的命名空间(其中命名空间通常由模块、类或显式命名空间指令定义),就会出现这种需求。

我不太明白为什么名称修饰仅适用于标识符属于不同命名空间的情况,因为重载函数可以在同一个命名空间中,并且同名的全局和局部变量也可以在同一个空间中。这个怎么理解?

具有相同名称但在不同范围内的变量是否也使用名称修饰?

(3) C 有名称修饰吗?如果不是,那如何处理一些全局变量和局部变量同名的情况呢?C 没有重载函数,对吧?

谢谢并恭祝安康!

0 投票
1 回答
7876 浏览

c++ - 查找与 C++ dll 中的方法相关的参数

好的,所以我可以使用 dumpbin.exe /exports library.dll 来查找 dll 中的所有方法。

...但是我如何找出要传递给它们的参数?当然没有头文件。

0 投票
3 回答
1786 浏览

c++ - C++ 名称修饰(装饰)是确定性的吗?

我希望在带有托管代码的非托管 C++ DLL 上加载库,然后在已损坏的外部函数上调用 GetProcAddress。我的问题是您从 C++ 编译器中获得的错误名称是确定性的吗?那就是:如果原件的签名没有改变,这个名字是否总是被转换成相同的错误名字?

0 投票
1 回答
2365 浏览

c++ - C ++获取函数/方法的错位名称

嗨,我需要从 c++ 应用程序本身中确定函数的错位名称。是否有任何等效__FUNCDNAME__于 g++ 中的宏?

0 投票
2 回答
477 浏览

c++ - 哪些 C++ 编译器在名称修饰中使用访问说明符?

我知道 MSVC 有,而 GCC 没有?其他人呢?

0 投票
4 回答
447 浏览

asp.net - ASP.NET 名称修饰是否一致?

当您有这样的 ASP 控件时:

它生成的 html 会破坏名称。如果我想直接访问生成的项目的 ID,我可以尝试找出它破坏名称的原因并查找该 ID。

生成的项目名称是否保证按照 Microsoft 的任何标准以特定方式完成?如果他们发布以不同方式执行此操作的新版本 .NET,我只是担心会出现这种情况。有没有办法在代码中生成自己的名字?

0 投票
1 回答
761 浏览

c - 使用 Visual Studio 与 Intel Fortran 结合,如何解决使用不同类型的名称修饰

我已经获得了可爱的 fortran 和 c 代码网格程序。为了使该程序能够编译,它需要一系列从软件供应商处预编译的库。这包括英特尔 MKL、MPICH2 等。在 linux 上一切正常。但是在Windows上我被卡住了:

使用命令行,我可以通过以下两种方式使用 ifort 编译程序:
[ A ] ifort /Qlowercase /assume:underscore .......
[ B ] ifort /Quppercase /assume:nounderscore .... ……

如果我决定使用选项A,我会得到一系列缺失的符号,因为一些外部库是使用大写的下划线编译的,我无法解析这些符号。同样,如果我使用选项B,其他外部库会抱怨,因为它们是使用带下划线的小写字母编译的。

有没有办法在链接状态期间重新映射符号/功能?有没有其他选择?

0 投票
4 回答
1961 浏览

c++ - 有什么方法可以在范围内重用标识符?

通常使用相同的标识符(如变量名称)来表示同一范围内的另一个变量会产生编译器错误,是否有任何技术可以实际向编译器指示在此范围内直到此特定点此名称有其自己的目的并且是用于引用此变量,但在此之后,相同的名称将引用其他东西,例如另一个用于其他目的的变量?

0 投票
1 回答
724 浏览

c++ - 转换 Classname::FunctionName( Para1, Para2 ) 中的符号

char** backtrace_symbols(void *buffer, int size)当抛出异常时,我正在使用 GNU 扩展“ ”来获取堆栈跟踪。是否有将符号转换为“人类可读”字符串的库函数 - 重做名称修饰?

如果没有,我会根据这篇Wiki 文章编写自己的函数。

具体的:

非常感谢,

查理