Name Mangling in C++ (四)

2014-11-24 12:06:07 · 作者: · 浏览: 3

4. ::= da # delete[]
5. ::= ps # + (unary)
6. ::= ng # - (unary)
7. ::= ad # & (unary)
8. ::= de # * (unary)
9. ::= co # ~
10. ::= pl # +
11. ::= mi # -
12.
13. ::= ml # *
14.
15. ::= dv # /
16. ::= rm # %
17. ::= an # &
18. ::= or # |
19. ::= eo # ^
20. ::= aS # =
21. ::= pL # +=
22. ::= mI # -=
23. ::= mL # *=
24. ::= dV # /=
25. ::= rM # %=
26. ::= aN # &=
27. ::= oR # |=
28. ::= eO # ^=
29. ::= ls # <<
30. ::= rs # >>
31. ::= lS # <<=
32. ::= rS # >>=
33. ::= eq # ==
34. ::= ne # !=
35. ::= lt # <
36. ::= gt # >
37. ::= le # <=
38. ::= ge # >=
39. ::= nt # !
40. ::= aa # &&
41. ::= oo # ||
42. ::= pp # ++
43. ::= mm # --
44. ::= cm # ,
45. ::= pm # ->*
46. ::= pt # ->
47. ::= cl # ()
48. ::= ix # []
49. ::= qu #
50. ::= st # sizeof (a type)
51. ::= sz # sizeof (an expression)
52. ::= cv # (cast)
53.
54. ::= v # vendor extended operator
类型编码:

1. ::=
2.
3. ::= P # pointer-to
4. ::= R # reference-to
5. ::= O # rvalue reference-to (C++0x)
6. ::= C # complex pair (C 2000)
7. ::= G # imaginary (C 2000)
8. ::= U # vendor extended type qualifier
下面是一段简单的代码:

1. /*
2. * Author: Chaos Lee
3.
4. * Description: A simple demo to show how the rules used to mangle functions' names work
5.
6. * Date:2012/05/06
7.
8. */
9. #include
10. #include
11. using namespace std;
12.
13. int test_func(int & tmpInt,const char * ptr,double dou,string str,float f)
14.
15. {
16. return 0;
17. }
18. int main(int argc,char * argv[])
19.
20. {
21. char * test="test";
22. int intNum = 10;
23. double dou = 10.012;
24. string str="str";
25. float f = 1.2;
26. test_func(intNum,test,dou,str,f);
27. return 0;
28. }

1. [lichao@sg01 name_mangling]$ g++ -c func.cpp
2.
3. [lichao@sg01 nam