问题标签 [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.
c++ - 从 demangled 名称中获取 mangled 名称
有没有办法从 g++ 中的 demangled name 中取回 mangled name。
例如,我有损坏的func(char*, int)
名称,我应该怎么做才能_Z4funcPci
恢复损坏的名称?
我的问题是 g++ 特定的。
python - “私有”名称修改和实例与类属性
我正在编写一个需要访问私有变量的装饰器并发现了这种差异。谁能解释一下?
(Python 2.5)
对于类中定义的属性,命名修饰按预期工作:
实例属性不起作用(这是我们应该做的正确的方式?)
PS“类属性”是正确的词吗?它们不是静态的,但是如果您将其中之一设为列表或其他一些可变类型,则它是共享的...
更新
实际上,第二个示例也可以正常工作。这是一个硬件问题(重启有帮助)。
compiler-construction - 英特尔 Visual Fortran 编译器名称修改,我的编译器是不是疯了?
我正在使用 Intel Visual Fortran Composer XE 2011 在 MS Visual Studio 2008 中构建我的 Fortran 项目。我收到链接器错误:LNK2019 未解析的外部符号。
我在我的 obj 文件上做了一个垃圾箱,我所有的符号(在 CVF 调用约定下)都导出为 _symbol1、_symbol2、_symbol3 等等,除了三个随机的带有一些前缀的符号。
例如:_ imp _symbol4、_ imp _symbol5、_ imp _symbol6
起初我怀疑我的调用约定一定是问题,但如果这是我的调用约定,难道不是所有其他符号都以 imp 为前缀导出了吗?它是如此随机,以至于其中三个奇怪地导出,我不太明白发生了什么。任何帮助,将不胜感激。
c++ - 由于名称修改而无法解析的外部符号
我在将 XERCES 函数从 2.6 升级到 2.8 时遇到链接器错误
我检查了 xerces-c_2.8.lib 并发现名称 lib 与我的 .obj 文件中的名称有点不同如图所示
所以我知道链接器不会找到匹配项并抛出错误。
但我无法理解为什么我的 .obj 文件包含不同的签名。
代码包括正确的头文件和名称仍然不正确的库。
任何帮助,将不胜感激。
c++ - 静态对象的名称管理
我遇到了这篇关于C++ 中动态链接的文章。
我们可以创建一个 C++ 工厂,它会返回我们感兴趣的类的对象。此外,我们应该在工厂的文件范围内创建一个静态对象,以便可以使用dlsym()
. (文章建议静态对象没有名称混乱。)
为什么静态对象没有名称混乱?
python - Thread 模块的 __init__ 中定义的变量如何重命名为 _Thread_
我正在查看适用于 Windows 的 Active python 2.7.2 32 位上的threading
module( ) 代码。<Python Home>/lib/threading.py
在 的__init__
函数中class Thread
,定义了很多变量:
这是我调用以下__init__
功能的方式class Thread
:-
我不明白该变量self._Thread__target
没有在__init__
函数的任何地方初始化class Thread
。但是,如果我在自己的函数中打印此变量,则会显示from函数的__init__
实际值。self.__target
class Thread
__init__
另外,我尝试编辑threading
模块并将这一行作为__init__
函数的最后一行class Thread
:-
print 'in init of Thread class in threading: ', self._Thread__target
尽管如此,我仍然可以看到正在打印的值,并且解释器没有向我显示任何错误。所以,我试图找到任何可能进行重命名的函数。但是,找不到。
__init__
函数中定义的所有其他变量都会发生这种情况class Thread
。我想知道变量之类self.__target
的重命名为self._Thread__target
.
c++ - 如何在 Visual Studio 汇编程序输出中解开名称?
使用 Visual Studio 2010/2012,可以编译带有/FAs
开关的 c++ 源文件,以生成结果代码的汇编输出。但是生成的 asm 文件包含所有符号的损坏形式。
是否有开关或其他智能方法可以让 Visual Studio 生成未损坏的符号?我知道可以手动输入 asm 文件,undname.exe
但切换会比自定义构建后事件方便得多。
c - C中的手动名称修改
我想为 C 接口实现某种名称修饰。我将拥有类似的功能和类型
现在,_ 在所有标准 c 类型定义中都广泛使用,因此如果使用这些类型定义,该方案将无法正常工作。GCC 和 MSVC 似乎接受使用 $ 的名称。那行得通吗?还有其他我可以使用的接受字符吗?
编辑:
我想这样做是因为
- 它避免了重复的名称
- 它强调标识符属于哪个类
- 它使自动生成C++接口成为可能
编辑2:
保留一个普通的字母会到处编译,但它也可能令人困惑:
编辑 3:
该符号可能因目标平台而异,但在该平台上,它不得与 C++ 名称修饰冲突。
编辑4:
禁止以数字开头的标识符。那么呢:
python - 防止 Ada DLL 中的名称错误
在创建 Ada DLL 时,是否有一种简单的方法可以防止 Ada 名称被破坏?
这是我的 .adb 代码
我的 .ads
我的蟒蛇
您可以看到我必须在函数名称的末尾添加“@0”,但是当我将相同的代码移动到不同的编译器时,这似乎发生了变化。这给我带来了一些问题。我需要一个标准的修改格式或一种方法来一起删除修改。
c++ - ABI 错位名称中的 C++ 模板参数依赖 decltype
考虑以下函数:
该片段Min(0, 1)
导致模板被实例化为Min<int, int>
. 奇怪的Min
是,我的代码的 g++ 和 clang 的名称是_Z3MinIiiEDTqultfp_fp0_cl7forwardIT_Efp_Ecl7forwardIT0_Efp0_EEOS0_OS1_
(又名:)decltype (({parm#1}<{parm#2})?((forward<int>)({parm#1})) : ((forward<int>)({parm#2}))) Min<int, int>(int&&, int&&)
。换句话说,用于推导返回类型的表达式是损坏的名称的一部分。就个人而言,我预计会稍微更理智一些:(_Z3MinIiiET_OS0_OT0_
又名:)int Min<int, int>(int&&, int&&)
。为什么不是这样?
似乎 g++ 只decltype
在实际需要的情况下使用表达式,因为这些形式都是_Z3Maxii
:
auto Max(int x, int y) -> int
auto Max(int x, int y) -> decltype(0)