In unserem letzten Projekt schreibe ich ein Makro, das unter bestimmten Bedingungen und wie hier erklärt C multi-line macro: do/while(0) vs scope block Ich habe versucht, do - while, um das zu erreichen. Unten finden Sie Beispielcode zu veranschaulichen, dass:Wie schreibe ich Multiline-Makro mit Continue- oder Break-Ausdruck
#define PRINT_ERROR_AND_CONTINUE_IF_EMPTY(dummy,dummystream,symbol,errorString) \
do{ \
if(dummy.empty())\
{\
dummyStream<<symbol<<",Failed,"<<errorString<<std::endl;\
continue;\
}\
}while(0)
int main()
{
int x =9;
std::ofstream& ofsReportFile;
while(x>5)
{
std::string str;
PRINT_ERROR_AND_CONTINUE_IF_EMPTY(str,ofsReportFile,"Test","Test String is Empty");
std::cout<<x<<std::endl;
x--;
}
return 0;
}
Dies ist jedoch nicht wie erwartet funktioniert, und die Grund-Anweisung innerhalb sie weiterhin werden kann, während so die Frage, wie mehrzeiligen Makro zu schreiben, mit Aussage fortsetzen und auch Benutzer, dass Makro kann es wie CONTINUE_IF_EMPTY (str) ;
Kann ich nur sagen "bitte nicht". –
Entfernen Sie das 'do ... while'. Noch besser, entfernen Sie das gesamte Makro. –
Ich muss an mehreren Orten in Long for Schleife überprüfen, wenn etwas leer ist, dann Fehler drucken und weiter so sollte ich diesen Code überall wiederholen – Kapil