Showing tag results for Code

Oct 21, 2014
Post comments count0
Post likes count1

The great thing about regular expression languages is that there are so many to choose from!

Raymond Chen
Raymond Chen

Before you ask a question about regular expressions, you should make sure you and your audience agree on which regular expression language you are talking about. Here is a handy table of which features are supported by which regular expression language. You can use that table to solve this customer's problem: I have a regular expression th...

Code
Oct 20, 2014
Post comments count0
Post likes count1

Scripting an Internet Explorer window

Raymond Chen
Raymond Chen

Today's Little Program takes a random walk through MSDN by starting at the page and randomly clicking links. The exercise is not as important as the technique it demonstrates. (I'm assuming the reader can figure out what language this script is written in. If you have to ask, then you probably won't understand this article at all. I am also no...

Code
Oct 17, 2014
Post comments count0
Post likes count1

When are global objects constructed and destructed by Visual C++?

Raymond Chen
Raymond Chen

Today we're going to fill in the following chart: The C++ language specification provides some leeway to implementations on when global static objects are constructed. It can construct the object before begins, or it construct the object on demand according to complicated rules. You can read [basic.start.init] for the gory details. Let's ass...

Code
Oct 16, 2014
Post comments count0
Post likes count1

If only DLLs can get DllMain notifications, how can an EXE receive a notification when a thread is created (for example)?

Raymond Chen
Raymond Chen

When a DLL is loaded, it receives a notification, and when it is unloaded (or when the process terminates), it gets a notification. DLLs also receive notifications when a thread is created and notifications when a thread exits. But what if you are an EXE? EXEs don't have a , so there is no way to receive these notifications. The trick here i...

Code
Oct 15, 2014
Post comments count0
Post likes count1

The GetCurrentThread function is like a check payable to Bearer: What it means depends on who's holding it

Raymond Chen
Raymond Chen

The function returns a pseudo-handle to the current thread. The documentation goes into significant detail on what this means, but I fear that it may have fallen into the trap of providing so much documentation that people decide to skip it. Okay, so first of all, what is a pseudo-handle? a pseudo-handle is a sentinel value for that is not r...

Code
Oct 10, 2014
Post comments count0
Post likes count1

Some parts of an interface can change but others can't

Raymond Chen
Raymond Chen

When I wrote about asking the compiler to answer calling convention questions, some people were concerned about whether this was a reliable mechanism or whether it was relying on something that can change in the future. This is a special case of the question, "What parts of an interface can change, and what can't?" And it all boils down to comp...

Code
Oct 8, 2014
Post comments count0
Post likes count1

Standard handles are really meant for single-threaded programs

Raymond Chen
Raymond Chen

When I discussed the conventions for managing standard handles, Sven2 noted that I implied that you need to call with a new handle if you close the current handle and asked "Wouldn't it make more sense to call it the other way round? I.e., first set the new handle, then close the old one? It would ensure that any other thread that runs in paralle...

Code
Oct 6, 2014
Post comments count0
Post likes count1

Enumerating cyclical decompositions with Stirling numbers

Raymond Chen
Raymond Chen

This whole enumeration nightmare-miniseries started off with Stirling numbers of the second kind. But what about Stirling numbers of the first kind? Those things ain't gonna enumerate themselves! The traditional formulation of the recursion for Stirling numbers of the first kind (unsigned version, since it's hard to enumerate negative numbers)...

Code
Oct 2, 2014
Post comments count0
Post likes count1

In the red corner, EXCEPTION_INT_DIVIDE_BY_ZERO and STATUS_INTEGER_DIVIDE_BY_ZERO; and in the blue corner, EXCEPTION_INT_OVERFLOW and STATUS_INTEGER_OVERFLOW

Raymond Chen
Raymond Chen

The exception code (and its doppelgänger ) is raised, naturally enough, when the denominator of an integer division is zero. The x86 and x64 processors also raise this exception when you divide by , or more generally, when the result of a division does not fit in the destination. The division instructions for those processors take a 2N-bit...

Code