Như những người khác đã đề cập trước, một quy ước rất phổ biến là sử dụng phiên bản chữ hoa của tên, và dấu chấm thay thế bằng một dấu gạch dưới: foo.h -> FOO_H
Tuy nhiên, điều này có thể dẫn đến xung đột tên với tên đơn giản và/hoặc thông thường. Vì lý do này, tiêu đề autogenerated như stdafx.h vào các dự án không rỗng Visual C++ C thêm một số chuỗi ngẫu nhiên, như:
#ifndef FOO_H__NsknZfLkajnTFBpHIhKS
#define FOO_H__NsknZfLkajnTFBpHIhKS
#endif
http://www.random.org/strings/ là một máy phát ngẫu nhiên hữu ích cho việc này.
Ngoài ra, nếu tập tin là một phần của một số submodule, hoặc nội dung của nó cư trú trong một không gian tên cụ thể, tôi có xu hướng thêm rằng để bảo vệ quá:
#ifndef SOMECOMPONENT_FOO_H__NsknZfLkajnTFBpHIhKS
#define SOMECOMPONENT_FOO_H__NsknZfLkajnTFBpHIhKS
namespace somecomponent
{
...
}
#endif
Nguồn
2011-02-01 21:06:11
Trong khi tên có thể được nhiều hơn hoặc ít trực quan, thực tế là với một chút kinh nghiệm bạn ngừng đọc những dòng đó. Đôi mắt và bộ não quen thuộc với '#ifdef blahblah ...' và tôi hầu như không bao giờ thực sự đọc những gì đang được kiểm tra, nó là một bảo vệ bao gồm. –
Một quan điểm hữu ích về vấn đề này: http://stackoverflow.com/questions/1744144/adding-an-include-guard-breaks-the-build/1744302#1744302 –
Bất kỳ ai làm phát triển C++ đều đã quen với việc nhận ra các tiêu đề bảo vệ rất nhanh. Nó sẽ luôn tuân theo tiêu chuẩn bạn đang thấy. "Tốt nhất" thực hành (trong dấu ngoặc kép vì nó được yêu cầu) là để đặt ifndef đầu tiên, xác định ngay lập tức sau, và kết thúc nó ở phần cuối của tập tin. Tôi đề nghị bạn học cách nhận ra điều này càng sớm càng tốt. –