Contributing Advent 4: MongoDB driver variable names
A while ago I started reading Expert C Programming, a book on the intricacies of C, written almost 20 years ago (in 1994). I can very greatly recommend this book, even for seasoned C developers. Even although I know about most of the subjects addressed in the book, I picked up a few new things as well.
Anyway, the book made me look at my default compiler flags again. I tended not to use -Wall at all, but I've since then expanded my CFLAGS to -Wall
-Wextra -Wdeclaration-after-statement -Wmissing-field-initializers
-Wshadow -Wno-unused-parameter. When running with the new flags, the MongoDB driver for PHP started throwing (among others) the following warning during compilation:
/home/derick/dev/php/derickr-mongo-php-driver/bson.c:1069:12: warning: declaration of ‘buffer’ shadows a global declaration [-Wshadow]
char *buffer;
^
At first I found this odd, as I could not find the declaration at all, until I looked closer at the location where the compiler though I had the error:
In file included from /home/derick/dev/php/derickr-mongo-php-driver/bson.c:26:0: /home/derick/dev/php/derickr-mongo-php-driver/php_mongo.h:301:3: warning: shadowed declaration is here [-Wshadow] } buffer; ^
And this pointed me to the buffer struct:
typedef struct {
char *start;
char *pos;
char *end;
} buffer;
This typedef declares buffer into the global scope and therefore the compiler rightfully warns us about this when trying to compile char
*buffer; in a function. The fix was to add the prefix mongo_ so that the new name becomes mongo_buffer. The mongo_ prefix is what we use for all the other structs we define as well.
Life Line
Created a chocolate shop and a restaurant; Updated 6 restaurants and an address; Confirmed 5 restaurants, a community_centre, and 3 other objects
Created a restaurant, a fast_food, and 2 other objects; Deleted a restaurant
I walked 8.5km in 1h31m45s
Created 2 buildings and a hairdresser shop; Updated a restaurant and an estate_agent office; Confirmed a cafe
I walked 2.2km in 38m09s
Merged pull request #1096
Bump actions/checkout from 6 to 7
Merged pull request #1095
Improve Tiverton Green mapping
Created 2 gates
I walked 7.1km in 1h23m15s
I walked 1.0km in 9m24s
Realign streets. They now have much less wide corners into each other.
Updated a fast_food
I walked 9.1km in 1h35m41s
I hiked 4.7km in 3h24m10s
I walked 6.7km in 1h12m03s
I walked 7.7km in 1h47m24s
Updated a pub
Updated a pub
Created a bar; Updated a bar; Confirmed a restaurant and a bar
I walked 8.1km in 4h3m56s
Updated a toilet
I walked 8.8km in 2h52m21s


Shortlink
This article has a short URL available: https://drck.me/adv1304-aet