EQuestionAnswers.com Computer/Electronics Questions and Answers
C, C++, VC++, COM/DCOM, DLL and more
#Login #Sign up  Facebook Twitter TGoogle+
 

#Previous question #Index of DLL Questions #Next question

C compiler links a function or symbol with appending under score before it. Function name main() links to symbol name _main(). Also if a variable name is int count; The linking symbol name will be _count.

For C++ compiler this is not true. C++ has function overloading mechanism. If C++ uses only under score before function name to link its symbol the purpose of overloading will not be resolved.

Take an example
Suppose in C++ we have add() function overloaded as
int add(int a, int b) - adds a and b, two arguments
int add(int a, int b, int c) - adds a, b and c, three arguments

Now if C++ uses _add() as symbol name then the two function body can never be linked.
To overcome this limitation of C, C++ linker uses named mangling.

Name mangling is the mechanism of C++ compiler to link functions and variables of same names to resolve them to some unique symbol names by altering the names with some extra information line index, argument size etc.
Function name mangling is done as <function index><function name>@<argument size>
Variable name mangling is done as ?<variable name>@@<UNIQUE ID>

Example will be
int add(int a, int b) links to

_1add@8 [function index 1, function name = add, argument size= sizeof(int)*2 = 8]

int add(int a, int b, int c) links to
_2add@12 [function index 2, function name = add, argument size= sizeof(int)*3 = 12]

int extrn_var links to
?extrn_var@@3HA [variable name = extrn_var, UNIQUE ID = 3HA ]

You have viewed 1 page out of 27. Your DLL learning is 0.00% complete. Login to check your learning progress.

 Vote 1

Similar topics related to this section

# DLL Frequently Asked Questions
# Frequently Asked Questions - DLL-files.com
# Dependency Walker Frequently Asked Questions (FAQ)
# Top 10 DLL Questions !
# DLL COM DCOM Interview Questions and Answers

* #1 webmaster Thu 27 Feb/2014 20:46:24(GMT)  Like 0 Unlike 0

Dear Users,

We are pleased to inform you that a forum/blog has been incorporated with www.mybestnotes.co.in. You are welcomed to add your comments, requests, codes, solutions and feedback to it. Please login(if already a member) or signup(for free) to avail to this facility.

Regards,
Webmaster

Your message goes here:

Name:Guest
Email:anonymous@unknown.com
My Post:*
Secutiry Code: ******  *
Preview this compose before posting this in discussion forum.
 
Note:
  1. Use [Sxx] code to show smiles. Example [S02]
  2. Use [URL ], example [URL http://www.google.com/]
  3. To display code or un formatted text use [CODE] [/CODE]. Example: [CODE] printf("Hello world"); [/CODE]
 [S01]   [S02]   [S03]   [S04]   [S05]   [S06]   [S07]   [S08] 
 [S09]   [S10]   [S11]   [S12]   [S13]   [S14]   [S15]   [S16] 
 [S17]   [S18]   [S19]   [S20]   [S21]   [S22]   [S23]   [S24] 

Note: Only members are allowed, * fields are mandatory.