宏這是最初發布的回答爲c++ macros with memory?C++與記憶
但不知何故,我不能夠得到這個編譯。我可能會在這裏錯過一些東西。 (我有一種感覺,這是一件C++可以做)
的main.cpp
#include <iostream>
using namespace std;
const char * hello = "hello";
const char * world = "world";
#define VAR
#define MEMORIZE world
#include "memorize.h"
#define MEMORIZE hello
#include "memorize.h"
int main() {
cout << VAR << endl;
return 0;
}
memorize.h
#undef VAR
#ifndef MEMORIZE
# error "No Argument to memorize.h"
#endif
#define VAR MEMORIZE
#undef MEMORIZE
,我得到的編譯錯誤是這樣的:
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
error: use of undeclared identifier 'MEMORIZE'
cout << VAR << endl;
^
note: instantiated from:
#define VAR MEMORIZE
^
1 error generated.
make[2]: *** [CMakeFiles/main.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/main.dir/all] Error 2
make: *** [all] Error 2
我真的想讓這個記憶的東西在預處理階段工作。有人可以幫忙嗎?我認爲BOOST_PP_COUNTER
在1.49
也使用這種技術,但我無法弄清楚如何。
我希望這是一種自虐的娛樂,而不是生產代碼。 :-D – stinky472 2012-03-02 00:06:04
好吧,目前它不編譯... 即使我想把它放在更廣泛的用途,我不能:P – 2012-03-02 00:11:17