오류 LNK2005: "int k"가 이미 정의됨
Win32 콘솔 애플리케이션을 여러 C 파일과 연결하면 "오류 LNK2005: A.obj"에 이미 정의된 "int k"(?a@@3HA)가 발생할 수 있습니다. 이 오류는 여러 파일에 동일한 이름의 변수가 정의된 경우 발생합니다.
주어진 예에서 A.cpp와 B.cpp는 모두 변수 k를 정의합니다. 단일 정의 규칙에 따르면, 각 전역 변수나 함수는 단일 정의를 가져야 합니다. 정의가 여러 개 있으면 모호함과 연결 오류가 발생합니다.
해결책:
이 오류를 해결하려면 다음 접근 방식을 사용할 수 있습니다.
이름 없는 네임스페이스 사용(익명 네임스페이스):
k 변수를 각 파일에 비공개로 설정하려는 경우 기호 이름 충돌을 방지하기 위해 이름 없는 네임스페이스를 사용하세요.
<code class="cpp">namespace { int k; }</code>
이것은 각 파일 내의 기호 k를 격리하여 다른 파일이 이에 액세스하거나 재정의하는 것을 방지합니다.
별도의 파일에서 변수 선언 및 정의:
공유해야 하는 경우 여러 파일에 걸쳐 변수 k를 사용하려면 extern을 사용하여 헤더 파일에서 이를 선언하고 별도의 컴파일 단위로 정의하세요.
A.h
<code class="cpp">extern int k;</code>
A.cpp
<code class="cpp">#include "A.h" int k = 0;</code>
B.cpp
<code class="cpp">#include "A.h" // Use `k` anywhere in the file</code>
헤더 파일에 k를 extern으로 선언하면 다른 파일에서 접근하여 사용할 수 있다. 재정의하지 않고.
위 내용은 내 Win32 콘솔 응용 프로그램에 \"오류 LNK2005: \"int k\"가 이미 정의되었습니다\"가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!