Bảo vệ header project nhưng vẫn lỗi

Dạ cho em hỏi sao em thêm đoạn bảo vệ header rồi mà khi chèn vào 2 file của 1 project lại bị lỗi ạ.
file const.h :

#pragma once
const char* tieude = "Flappy bird"; 

file a.cpp em cũng có include “const.h”
file main.cpp em cũng có include “const.h” và include “a.cpp”

Tại sao bị lỗi trong thì em có #pragma once ạ ( em cũng đã thử bằng #ifndef rồi ạ), vẫn lỗi đã định nghĩa ạ

Lỗi gì ?
Sao lại include file .cpp ?

1 Like

Nếu bạn define tieude trên const.h như vậy thì khi include const.h ở đâu, nó sẽ define lại tieude ở chỗ đó.

Cách tốt hơn thì bạn nên define tieude trong 1 file cpp vd như ở đây là const.cpp

#include "const.h"
const char* tieude = "Flappy bird"; 

rồi extern nó trong const.h

#pragma once

#ifndef _CONST_H_

extern const char* tieude;

#endif // !_CONST_H_

trong main hay a thì chỉ cần #include "const.h" là có thể truy cập đc tới biến tieude thoải mái r :smiley:

À mà bạn cũng không nên include source file này vào source file khác. nên dùng header thay thế

4 Likes

dạ vâng, Em đã bị nhầm là .cpp và .h giống nhau nên em đã include file .cpp
em khắc phục được rùi ạ. Em cảm ơn ạ.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?