Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ PFYvv代表什么?(不是PFvv!)_C++_Arm_Name Mangling_Armcc - Fatal编程技术网

C++ PFYvv代表什么?(不是PFvv!)

C++ PFYvv代表什么?(不是PFvv!),c++,arm,name-mangling,armcc,C++,Arm,Name Mangling,Armcc,我正在尝试将符号的文件与标题中已损坏的生成文件链接。 (将ROM定位功能与RAM功能相匹配。) 在.sym中,我有一个带有“PFvv”参数的函数, 通常要求->作废(fn*)(作废) 编译器将生成以下输出作为参数:PFYvv 结果:链接器未链接 问题: Y代表什么? 有手臂损伤的参考文件吗 .sym损坏的名称: _ZN10CCasd15lolEP13strPcPFvvEhPvm 编译器生成的名称: _ZN10CCasd15lolEP13strPcPFYvvEhPvm .h定义 class C

我正在尝试将符号的文件与标题中已损坏的生成文件链接。 (将ROM定位功能与RAM功能相匹配。)

在.sym中,我有一个带有“PFvv”参数的函数, 通常要求->作废(fn*)(作废)

编译器将生成以下输出作为参数:PFYvv

结果:链接器未链接

问题

Y代表什么? 有手臂损伤的参考文件吗

.sym损坏的名称:

_ZN10CCasd15lolEP13strPcPFvvEhPvm
编译器生成的名称:

_ZN10CCasd15lolEP13strPcPFYvvEhPvm
.h定义

class CCasd{
    static int lol(in_str*h, char* name, void(*fn)(void), unsigned char p, void *s, unsigned long l);
};
应答后代码

以下是生成PFvv和PFYvv损坏名称的方法:

#ifdef          __cplusplus
extern  "C" {                               /* C declarations in C++     */
#endif

class CCASD {
public:
    static int lol(in_str*h, char* name, void(*fn)(void), unsigned char p, void *s, unsigned long l);//Will be PFYvv
};

#ifdef          __cplusplus
}                                           /* End of C declarations     */
#endif

class CCASD {
public:
    static int lol(in_str*h, char* name, void(*fn)(void), unsigned char p, void *s, unsigned long l);//Will be PFvv
};
显然,(在链接文档中列举了一些修改)

因此,我们开始……并发现您的“函数指针”类型,并给出以下解释:

裸函数类型的“Y”前缀在实现中编码外部“C”,这些实现区分具有“C”和“C++”语言链接的函数类型。这只会影响类型混乱,因为外部“C”函数对象具有未混合的名称

至于您是否有这些实现中的一个(我的意思是一般来说,您的实现显然是其中之一),值得一读。

显然,(在链接文档中列举了一些修改)

因此,我们开始……并发现您的“函数指针”类型,并给出以下解释:

裸函数类型的“Y”前缀在实现中编码外部“C”,这些实现区分具有“C”和“C++”语言链接的函数类型。这只会影响类型混乱,因为外部“C”函数对象具有未混合的名称


至于您是否有这些实现之一(我的意思是,一般来说,您的实现显然是其中之一),值得一读。

谢谢,您让它看起来很简单,但对损坏知之甚少,这很难搜索!)另外,在问题中添加一段代码来生成两种情况,这将有助于两种可能的声明之间的实际示例差异@康斯:不客气。我唯一要找的就是“手臂ABI”。。其余的人只是阅读和跟踪线索。人们过于依赖“搜索”而无法直接找到答案;我真的认为他们应该多学习!通过我的过程,我希望向大家展示这一点的价值。也。。。我将你链接到的问题中有一个例子,建议阅读;)我已经为你所写的东西做好了准备,虽然我是一个嵌入式C工程师,但我从来没有这么仔细地看C++的。我一开始就不会搜索“手臂ABI”:D!再次感谢:)谢谢,你让它看起来很简单,但对弄乱不太了解,搜索起来很困难!:)另外,在问题中添加一段代码来生成两种情况,这将有助于两种可能的声明之间的实际示例差异@康斯:不客气。我唯一要找的就是“手臂ABI”。。其余的人只是阅读和跟踪线索。人们过于依赖“搜索”而无法直接找到答案;我真的认为他们应该多学习!通过我的过程,我希望向大家展示这一点的价值。也。。。我将你链接到的问题中有一个例子,建议阅读;)我已经为你所写的东西做好了准备,虽然我是一个嵌入式C工程师,但我从来没有这么仔细地看C++的。我一开始就不会搜索“手臂ABI”:D!再次感谢:)