Nó không chỉ hoạt động ở bất cứ đâu, mà còn có thể dẫn đến một số kỹ thuật thú vị. Dưới đây là một ví dụ tạo ra một điều tra và một bảng chuỗi tương ứng được đảm bảo được đồng bộ.
Animals.h:
ANIMAL(Anteater)
ANIMAL(Baboon)
...
ANIMAL(Zebra)
AnimalLibrary.h:
#define ANIMAL(name) name,
enum Animals {
#include "Animals.h"
AnimalCount
};
#undef ANIMAL
extern char * AnimalTable[AnimalCount];
AnimalLibrary.cpp:
#include "AnimalLibrary.h"
#define ANIMAL(name) #name,
char * AnimalTable[AnimalCount] = {
#include "Animals.h"
};
main.cpp:
#include "AnimalLibrary.h"
int main()
{
cout << AnimalTable[Baboon];
return 0;
}
Hãy chắc chắn không để đưa thông thường bao gồm bảo vệ trong bất kỳ tập tin đó sẽ được bao gồm nhiều lần!
Phải đồng ý với William Pursell mặc dù kỹ thuật này sẽ khiến mọi người gãi đầu.
Nguồn
2011-04-06 15:53:36
Tại sao bạn không thử và xem chính mình trước? – Nawaz
..không gần trình biên dịch ngay bây giờ ... – JasonGenX