📄 p12306.c
字号:
// prms-id: 12306void *ptr1, *ptr2;int fail = 0;extern "C" int printf(const char *...);class RWSlist { };class RWSlistIterator {public: RWSlist *slist; RWSlistIterator(RWSlist& s) { } void toLast() { if (ptr1 != (RWSlistIterator*)this) fail = 5; if (ptr2 != &(*this).slist) fail = 6; if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); }};class RWCollectable {};class RWSlistCollectables : public RWSlist {public: RWSlistCollectables() { } RWSlistCollectables(RWCollectable* a) { }};class RWIterator { }; class RWSlistCollectablesIterator : public RWIterator, public RWSlistIterator {public: RWSlistCollectablesIterator(RWSlistCollectables& s) : RWSlistIterator(s) { } };class Sim_Event_Manager {public: RWSlistCollectables scheduled_events_; RWSlistCollectablesIterator last_posted_event_position_; Sim_Event_Manager(); void post_event();};Sim_Event_Manager::Sim_Event_Manager () :last_posted_event_position_(scheduled_events_){}void Sim_Event_Manager::post_event () { ptr1 = (RWSlistIterator*)&last_posted_event_position_; ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, &((RWSlistIterator*)&last_posted_event_position_)->slist); if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) fail = 1; if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) fail = 2; if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, &((RWSlistIterator&)last_posted_event_position_).slist); if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) fail = 3; if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) fail = 4; last_posted_event_position_.toLast();}int main(int argc, char **argv) { Sim_Event_Manager foo; foo.post_event(); return fail;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -