Home > Article > Backend Development > Why Am I Getting Error LNK2005: Multiple Definitions of \'k\' in My Win32 Console Application?
Error LNK2005: Multiple Definitions of 'k'
When developing a Win32 console application with multiple C source files, you may encounter error LNK2005, indicating that a variable has been defined multiple times.
Cause of the Error
In the given code, both A.cpp and B.cpp define a global variable named 'k'. This violates the C one definition rule, which states that each symbol (function, variable, etc.) must be defined only once in a program.
Resolving the Issue
There are several ways to resolve this error:
1. Using Nameless Namespace (for Variables Needed in Multiple Files)
If you need the same variable in both cpp files, use a nameless namespace to prevent multiple definitions:
<code class="cpp">namespace { int k; }</code>
2. Using 'extern' (for Variables Shared Across Files)
If you need to share a variable across multiple files, declare the variable as 'extern' in the header file and define it in only one cpp file:
<code class="cpp">// A.h extern int k; // A.cpp int k = 0; // B.cpp #include "A.h" // Use `k` anywhere in B.cpp</code>
By following these approaches, you can resolve error LNK2005 and ensure that each symbol is defined only once in your program.
The above is the detailed content of Why Am I Getting Error LNK2005: Multiple Definitions of \'k\' in My Win32 Console Application?. For more information, please follow other related articles on the PHP Chinese website!