Im folgende Beispiel erwarte ichErweiterung Makro innerhalb Makro
doSomething
asserting in "doSomething()"
zu sehen, aber ich jede Ausgabe auf der Konsole nicht sehen.
Wenn ich HUTAssert (doSomething()) in main(), ich sehe den erwarteten Ausgang, so dass ich erwarte, dass dies in einem anderen Makro
mit aufwendet ein Makro zu tun hat#include <iostream>
using namespace std;
#define LOPTAssertEnabled 1
#define HUTAssert(expr) ((expr)? (void(0)) : assertMe(#expr))
#define HAOPAssert(expr) ((isLOPTAssertEnabled())? HUTAssert(#expr) : void(expr))
void assertMe(char const* expr) {
std::cout <<" asserting in "<<expr;
}
bool doSomething() {
std::cout <<" did something "<<std::endl;
return false;
}
bool isLOPTAssertEnabled() {
return LOPTAssertEnabled;
}
int main() {
HAOPAssert(doSomething());
}
Sie scheinen zu wissen, was "# expr" tut. Was erwarten Sie von 'HUTAssert (#expr)'? – chris