A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
12
Task/Metaprogramming/C/metaprogramming-1.c
Normal file
12
Task/Metaprogramming/C/metaprogramming-1.c
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
// http://stackoverflow.com/questions/3385515/static-assert-in-c
|
||||
#define STATIC_ASSERT(COND,MSG) typedef char static_assertion_##MSG[(!!(COND))*2-1]
|
||||
// token pasting madness:
|
||||
#define COMPILE_TIME_ASSERT3(X,L) STATIC_ASSERT(X,static_assertion_at_line_##L)
|
||||
#define COMPILE_TIME_ASSERT2(X,L) COMPILE_TIME_ASSERT3(X,L)
|
||||
#define COMPILE_TIME_ASSERT(X) COMPILE_TIME_ASSERT2(X,__LINE__)
|
||||
|
||||
COMPILE_TIME_ASSERT(sizeof(long)==8);
|
||||
int main()
|
||||
{
|
||||
COMPILE_TIME_ASSERT(sizeof(int)==4);
|
||||
}
|
||||
9
Task/Metaprogramming/C/metaprogramming-2.c
Normal file
9
Task/Metaprogramming/C/metaprogramming-2.c
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
//requires C99
|
||||
#define ITERATE_LIST(n, list) \
|
||||
for(Node *n = (list)->head; n; n = n->next)
|
||||
|
||||
...
|
||||
ITERATE_LIST(n, list)
|
||||
{
|
||||
printf("node value: %s\n", n->value);
|
||||
}
|
||||
3
Task/Metaprogramming/C/metaprogramming-3.c
Normal file
3
Task/Metaprogramming/C/metaprogramming-3.c
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#define my_min(x, y) ((x) < (y) ? (x) : (y))
|
||||
...
|
||||
printf("%f %d %ll\n", my_min(0.0f, 1.0f), my_min(1,2), my_min(1ll, 2ll));
|
||||
Loading…
Add table
Add a link
Reference in a new issue