What is “:-!!” in C code?

This is, in effect, a way to check whether the expression e can be evaluated to be 0, and if not, to fail the build. The macro is somewhat misnamed; it should be something more like BUILD_BUG_OR_ZERO, rather than …ON_ZERO. (There have been occasional discussions about whether this is a confusing name.) You should read … Read more

Is there a reason for C#’s reuse of the variable in a foreach?

The compiler declares the variable in a way that makes it highly prone to an error that is often difficult to find and debug, while producing no perceivable benefits. Your criticism is entirely justified. I discuss this problem in detail here: Closing over the loop variable considered harmful Is there something you can do with … Read more

Image Processing: Algorithm Improvement for ‘Coca-Cola Can’ Recognition

An alternative approach would be to extract features (keypoints) using the scale-invariant feature transform (SIFT) or Speeded Up Robust Features (SURF). You can find a nice OpenCV code example in Java, C++, and Python on this page: Features2D + Homography to find a known object Both algorithms are invariant to scaling and rotation. Since they … Read more

What do two question marks together mean in C#?

It’s the null coalescing operator, and quite like the ternary (immediate-if) operator. See also ?? Operator – MSDN. FormsAuth = formsAuth ?? new FormsAuthenticationWrapper(); expands to: FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper(); which further expands to: if(formsAuth != null) FormsAuth = formsAuth; else FormsAuth = new FormsAuthenticationWrapper(); In English, it means … Read more

How do I remedy “The breakpoint will not currently be hit. No symbols have been loaded for this document.” warning?

Start debugging, as soon as you’ve arrived at a breakpoint or used Debug > Break All, use Debug > Windows > Modules. You’ll see a list of all the assemblies that are loaded into the process. Locate the one you want to get debug info for. Right-click it and select Symbol Load Information. You’ll get … Read more

Easiest way to convert int to string in C++

C++11 introduces std::stoi (and variants for each numeric type) and std::to_string, the counterparts of the C atoi and itoa but expressed in term of std::string. #include <string> std::string s = std::to_string(42); is therefore the shortest way I can think of. You can even omit naming the type, using the auto keyword: auto s = std::to_string(42); … Read more