Posts Tagged ‘C’

Boost C++ library and the end of the world

November 8, 2015

While working on some C++ code, I made a mistake and got this error:

ERROR: Throw location unknown (consider using BOOST_THROW_EXCEPTION)
Dynamic exception type: boost::exception_detail::clone_impl
<boost::exception_detail::error_info_injector<boost::gregorian::bad_year> >
std::exception::what: Year is out of valid range: 1400..10000

I find two things rather interesting here. The first is that the Boost date_time library isn’t using the Boost exception library. The second is that the date_time library has defined the year 10000 as the last in the Gregorian calendar.

Based on this, I predict that the end of the year 10000 will be the end of the world. Using the Boost libraries to make end-of-the-world predictions should work about as well as using the Bible, right? The end is nigh!

Dennis Ritchie is no more, but C lives on

October 14, 2011

Dennis Ritchie recently passed away. He gave us, among other things, the C programming language. It is like a form of poetry enjoyed and practiced by software developer folks. He might not have thought so; he has called C quirky and flawed. The numerous new programming languages that used C syntax as a starting point suggests many people did see it poetically, or at least positively from a pragmatic standpoint. Or a deranged one;  I use the descendants of C so much that I cannot tell if the poetry I see is the result of my being deranged by C. The language’s influence on computing is pervasive and extends to most things running software that are not commonly thought of as computing devices.

In short, Ritchie created the most popular form of poems in the information age, and you are benefiting from his work right now.

Microsoft macros, please see Stroustrup

June 4, 2011

This past week at work, I looked into why I could use a member variable called “interface” just fine in some source files but not others. Preprocessor output showed the name interface was being changed to “struct” in the files that had errors, and sometimes not where I defined the data structure that contained the interface field, but somewhere else later in the file. I eventually tracked down the culprit to objbase.h, a Microsoft supplied header file used by Direct3D 9 and maybe some other stuff. It has this wonderful gem:

#define interface  struct

No C or C++ developer should ever do that. There is no good or justifiable reason to name a macro something that, in many naming conventions, is a perfectly fine name to use for something other than a macro. Most naming conventions use all capital letters only for macro names in order to avoid such confusion.

Bjarne Stroustrup also sees this as a problem. He recommends avoiding macros whenever possible, and I can see why. This is easier to do in C++ with the help of such things as templates that are not in C, but adhering to a good naming convention can eliminate a lot of troubles when macros must be used.

In short, I find it inexcusable for any developer to do something like what I found in objbase.h. Whoever is responsible should be slapped. I can only hope that has already happened.


False Steps

The Space Race as it might have been

keithlugcom.wordpress.com/

You Control The Action!

High Frontier

the space colony simulation game

Simple Climate

Straightforwardly explaining climate change, so you can read, react and then get on with your life.