我感興趣的是能夠做這樣的事:C++編譯時的狀態變量
void ISR()
{
MEASURE_TIME(counters)
do_something();
MEASURE_TIME(counters)
do_something_else();
MEASURE_TIME(counters)
do_another_thing();
MEASURE_TIME(counters)
do_one_last_thing();
MEASURE_TIME(counters)
}
這將在編譯時不知怎麼翻譯成這樣:
void ISR()
{
counters[0] = measure_time();
do_something();
counters[1] = measure_time();
do_something_else();
counters[2] = measure_time();
do_another_thing();
counters[3] = measure_time();
do_one_last_thing();
counters[4] = measure_time();
}
是否有通過預處理器(似乎不太可能)或模板來維護和增加整數狀態的方法?
我知道我能做到這一點:
void ISR()
{
int i = 0;
counters[i++] = measure_time();
do_something();
counters[i++] = measure_time();
do_something_else();
counters[i++] = measure_time();
do_another_thing();
counters[i++] = measure_time();
do_one_last_thing();
counters[i++] = measure_time();
}
,但有一些額外的價值具有編譯時指數(這是很難解釋這裏的W/O進入一些專有細節)
編輯:這是一個嵌入式系統,並__COUNTER__
不可用(我剛剛試了一下:__COUNTER__
不是由我的編譯器或預處理器定義的),我不知道我能得到升壓工作,至少不在其en tirety。
有關預處理器計數器,請參見http://stackoverflow.com/questions/1132751。 – Tobias 2012-03-01 16:58:53
[C++是否支持編譯時計數器?](http://stackoverflow.com/questions/6166337/does-c-support-compile-time-counters) – 2012-03-01 17:14:13
...實際上解決方案http: //stackoverflow.com/a/6210155/44330似乎可能工作。 – 2012-03-01 17:14:27