BenBE's humble thoughts Thoughts the world doesn't need yet …

24.08.2011

Schleifchen erwartet

Filed under: Software — Schlagwörter: , , , — BenBE @ 12:30:50

Unter der Kategorie Kuriositäten kann man glaube folgenden GCC-Bug abhandeln, der bei mir mit folgendem Source auftrat:

        // Run the job we've taken
        if(cleanup_func) {
            pthread_cleanup_push(cleanup_func, cleanup_arg);
        }

        job_func(job_arg);

        if(cleanup_func) {
            pthread_cleanup_pop(1);
        }

Wobei job_func ein normaler Callback-Typ der Form

typedef void (* dispatch_func_t)(void *);

ist, also einen Pointer entgegen nimmt und nix zurückliefert. Nunja. Versucht man obigen Source (im Zusammenhang mit etwas mehr Source eines Thread-Pools zu compilieren, erhält man recht überraschend eine Fehlermeldung vom GCC (4.6.1-4):

gcc -g -Wall -Werror -std=c99 -I./src -O9 -o ./obj/threadpool.o -c ./src/threadpool.c
./src/threadpool.c: In Funktion »_threadpool_dowork«:
./src/threadpool.c:120:9: Fehler: expected »while« before »job_func«

Und ja: Der will da wirklich ne While-Schleife haben! Geben wir sie ihm also:

        // Run the job we've taken
        if(cleanup_func) {
            pthread_cleanup_push(cleanup_func, cleanup_arg);
        }

        //GCC fails if I DON'T write a while loop here. Let's make it happy!
        while(0);

        job_func(job_arg);

        if(cleanup_func) {
            pthread_cleanup_pop(1);
        }

Und der GCC ist zufrieden.

Flattr this!

02.08.2011

FizzBuzz BrainFuck

Filed under: Fun,GeSHi — Schlagwörter: , , — BenBE @ 01:17:35

Well yeah, after some nasty person dropped a link about why programmers are so bad at programming I somehow got to have a look at the Rosetta Code project’s site detailling this task and found (not to my surprise) that noone had solved that task — yet! So I sat down and implemented it. Usually this task should take you only about a few minutes but since I hardly ever programm anything in BrainFuck it took me roughly 45 minutes to complete. But well: Here’s the result (Beware: Ugly code)! (more…)

Flattr this!

Powered by WordPress