Arvorezinha - C Preprocessor
Aqui vai uma submissão ligeiramente lame da arvorezinha em C preprocessor. Infelizmente não descobri como concatenar os ‘*’ (concatenar uma vez funciona com ##, mas a segunda vez não, dado que o preprocessor não avalia as expressões até o fim). Se alguém tiver sugestões, tomem a liberdade de as colocar nos comentários.
print.h:
#if i <= total
#if i > 0
#pragma message( STR )
#endif
#include "inc_i.h"
#include __FILE__
#endif
inc_i.h:
#if i == 0
#undef i
#define i 1
#undef STR
#define STR "*"
#elif i == 1
#undef i
#define i 2
#undef STR
#define STR "**"
#elif i == 2
#undef i
#define i 3
#undef STR
#define STR "***"
#elif i == 3
#undef i
#define i 4
#undef STR
#define STR "****"
#elif i == 4
#undef i
#define i 5
#undef STR
#define STR "*****"
#elif i == 5
#undef i
#define i 6
#undef STR
#define STR "******"
#endif
#undef j
#define j 0
test.cpp:
#define total 5
#define i 0
#define STR ""
#include "print.h"
O resultado é apresentado durante a compilação do test.cpp:
C:\>cl /c test.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
test.cpp
*
**
***
****
*****
3 comentários a “Arvorezinha - C Preprocessor”