Rumah >pembangunan bahagian belakang >C++ >Mengapa Kod C Saya Menghasilkan Ralat 'Berbilang Takrif `wat'', dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Kod C Saya Menghasilkan Ralat 'Berbilang Takrif `wat'', dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-12-04 03:56:101012semak imbas

Why Does My C   Code Produce a

Berbilang Takrifan 'wat' dalam Projek C

Kod yang diberikan terdiri daripada empat fail: FileA.cpp, FileA.h, FileB.cpp dan FileB.h. Apabila disusun, ia menghadapi ralat yang menyatakan "berbilang takrifan `wat'".

FileB.h mentakrifkan pembolehubah integer bernama 'wat' seperti berikut:

#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();


#endif /* FILEB_H_ */

Memandangkan fail pengepala ini disertakan dalam kedua-dua FileA.cpp dan FileB.cpp, pengkompil mengesan bahawa 'wat' ditakrifkan beberapa kali. Ini berlaku kerana makro FILEB_H_ tidak ditakrifkan dengan betul dalam semua fail pengepala.

Untuk menyelesaikan isu ini, fail pengepala harus diubah suai sebagai berikut:

FileA.h:

#ifndef FILEA_H_
#define FILEA_H_

#include "FileB.h"
void hello();

#endif /* FILEA_H_ */

FileB.h:

#ifndef FILEB_H_
#define FILEB_H_

extern int wat;  // Declare 'wat' as external
void world();


#endif /* FILEB_H_ */

FileB .cpp:

#include "FileB.h"

int wat = 0;  // Define 'wat' with its initial value
void world()
{
    // More code
}

Dengan menggunakan 'luar' dalam FileB.h, kami memaklumkan pengkompil bahawa 'wat' ditakrifkan di tempat lain dan ia tidak sepatutnya mencari definisinya dalam fail semasa. Takrifan sebenar 'wat' kemudiannya disediakan dalam FileB.cpp, mengelakkan ralat takrifan berbilang.

Atas ialah kandungan terperinci Mengapa Kod C Saya Menghasilkan Ralat 'Berbilang Takrif `wat'', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn