October 07, 2018
Auto-recursive main() function
"Give me a place to stand and a lever long enough and I will move the world !" -- Archimedes

I prove that it is possible to write a recursive (auto-recursive) main() function, that is : we do not need to call another function from main() to recurse ourselves.

In the technicals of it, we must use both of the first 2 arguments of the main(argc, argv) function.

A external pointer must be used, so we can append to it some value that must be externalised.


 #include <stdio.h>

 int *addr;

 int main(int argc, char *argv[])
 {
  addr = & argc;
  ++(*addr);
  printf("Hello, world\n");
  return (argc < 10) ? main(argc, argv) : 0;
 }



PS : imi pot imagina si alte utilizari, precum _start() / _start_kernel() din Linux booting process, punand la printk() ca argument un fisier .txt, obtinut dintr-o poza kewl (vezi Linux T-shirt, May the source be with you, ori Christmas Tree .c/.txt in kernel, ori o poza cu o domnisoara draguta din vacanta de la mare ;-) , de preferinta prietena :-) ), poza trecuta prin Jpeg2Ascii, aflat in Ubuntu, Debian si celelalte distributii, precum si pe Net ca packet independent. Amin.



---

https://romania-acknowledges-stars.blogspot.com https://ideas-of-creative-software.blogspot.com https://alexandrugoia.yolasite.com https://github.com/alexandergoia/kewl-source-code
                                   http://goia.go.ro/

_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Raspunde prin e-mail lui