The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,854 other subscribers

Archive for the ‘C++’ Category

RSS feed for Dave’s Development Blog – mostly OTA articles on the Open Tools API for Delphi and C++ Builder

Posted by jpluimers on 2017/01/16

TL;DR: http://www.davidghoyle.co.uk/WordPress/?feed=rss2

Since there is no RSS link  on the page [WayBackDave’s Development Blog – Software Development using Borland / Codegear / Embarcadero RAD Studio

Since I wanted to follow his “blog” (which is sort of a collection of WordPress pages, mainly about the programming OTA: the Open Tools API interface to Delphi and C++ Builder), I was looking for the RSS feed.

Luckily, Feedly knows how to detect most blogging platforms, so it came up with https://feedly.com/i/subscription/feed/http://www.davidghoyle.co.uk/WordPress/?feed=rss2 which indicates the final bit is the RSS feed URL.

Some interesting links from there:

via: [WayBackOTA Interface Search 1.1 and GitHub http://www.davidghoyle.co.uk/WordPress/?…

–jeroen

Posted in C++, C++ Builder, Delphi, Development, RSS, SocialMedia, Software Development | Leave a Comment »

Compiler Explorer – how various C++ compilers translate code into various machine code targets

Posted by jpluimers on 2017/01/03

The first implementation of Compiler Explorer supports many versions of the gcc, clang and icc compilers on ARM, ARM64, AVR and x86 targets.

On the left you type your C++ code, on the right you see the resulting assembler code optionally with byte code and colorised so you can correlate the C++ lines with the assembly.

A great way to start the year: learning new things!

Related:

–jeroen

via:

Some videos:

Read the rest of this entry »

Posted in ARM, Assembly Language, C++, Conference Topics, Conferences, Development, Event, Software Development, x86 | Leave a Comment »

Cool little trick to show all the preset variables for your GCC/Clang compiler

Posted by jpluimers on 2016/08/30

Thanks David Berneda for sharing this a while ago:

Cool little trick to show all the preset variables for your GCC/Clang compiler:

clang -E -dM - < /dev/null

I’ve always wondered how to get these. Some are kind of surprising, especially since there are 320 of them, at least on my system.

On my system (Mavericks, I wish the sw_vers console tool would tell that): 170 lines.

Read the rest of this entry »

Posted in Apple, C, C++, Development, Mac OS X / OS X / MacOS, OS X 10.9 Mavericks, Power User, Software Development | Leave a Comment »

Workaround for “Visual Studio 2015 C++ Compiler Secretly Inserts Telemetry Code Into Binaries” – Slashdot

Posted by jpluimers on 2016/07/20

Reader edxwelch writes:

Reddit user sammiesdog discovered recently that Visual Studio 2015 C++ compiler was inserting calls to a Microsoft telemetry function into binaries. “I compiled a simple program with only main(). When looking at the compiled binary in IDA, I see a call fortelemetry_main_invoke_trigger and telemetry_main_return_trigger. I cannot find documentation for these calls, either on the web or in the options page,” he wrote. Only after the discovery did Steve Carroll, the dev manager for Visual C++ admit to the “feature” and posted a workaround to remove it.

A Microsoft spokesperson confirmed the existence of this behavior to InfoQ, adding that the company wil be removing it in a future preview build. For those who wish to get rid of it, the blog writes:

Users who have a copy of VS2015 Update 2 and wish to turn off the telemetry functionality currently being compiled into their code should add notelemetry.obj to their linker command line.

Quoted in full as I’m baffled.

Source: Visual Studio 2015 C++ Compiler Secretly Inserts Telemetry Code Into Binaries – Slashdot

via: Dear developers, I thought you should know. Yours, privacy. http://m.slashdot.org/story/312289Jan Wildeboer – Google+

–jeroen

Posted in C++, Development, Software Development, Visual Studio C++ | 1 Comment »

How to: Set a Thread Name in Native Code

Posted by jpluimers on 2016/06/15

This is what the Delphi [WayBack] System.Classes.TThread.NameThreadForDebugging (introduced in Delphi 2010) is based on:

//
// Usage: SetThreadName (-1, "MainThread");
//
#include <windows.h>
const DWORD MS_VC_EXCEPTION=0x406D1388;

#pragma pack(push,8)
typedef struct tagTHREADNAME_INFO
{
   DWORD dwType; // Must be 0x1000.
   LPCSTR szName; // Pointer to name (in user addr space).
   DWORD dwThreadID; // Thread ID (-1=caller thread).
   DWORD dwFlags; // Reserved for future use, must be zero.
} THREADNAME_INFO;
#pragma pack(pop)

void SetThreadName( DWORD dwThreadID, char* threadName)
{
   THREADNAME_INFO info;
   info.dwType = 0x1000;
   info.szName = threadName;
   info.dwThreadID = dwThreadID;
   info.dwFlags = 0;

   __try
   {
      RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info );
   }
   __except(EXCEPTION_EXECUTE_HANDLER)
   {
   }
}

Related:

For Delphi 2009 and 2007: It is implemented in the SetThreadName method of the IdGlobal unit.

–jeroen

Posted in C++, Delphi, Development, Software Development | Leave a Comment »

The huge Borland C++ Box

Posted by jpluimers on 2016/03/09

I never had the box, but someone is selling the [Wayback] 10+ kg Borland C++ 3.0 box:

The 10+ kg Borland C++ 3.0 box

image

Edit 2022-02-04: the above went away because of link rot, so I replaced it with an Archive.is version as it was copied at [Wayback/Archive.is] My First Windows C++ Application in Ages: Hello World in Win32 with Visual C++ 2010 – Pete Brown’s 10rem.net.

I did a bit of digging ([Wayback/Archive.is] borland c++ box – Google Search) and found [Wayback/Archive.is] Version information for older Borland/Inprise C Compilers has all the product box photos of these products:

Borland C++ 3.1 through 4.5 shipped in huge boxes, each even larger than the before it.

The box with the 1994 Borland C++ 4.5 and Database Tools supported DOS, Windows, and Win32. It had either a CD or 28 3.5″ HD diskettes.

The last version with 5.25″ diskettes was the 1991 Borland C++ 3.1: 15-5.25″ 1.2 Meg. Diskettes or 15 3.5″ 1.44MB disks.

Borland C++ 3.1 and Application Frameworks

–jeroen

Posted in Borland C++, C++, Development, Software Development | 2 Comments »

On Epsilon, MachineEpsilon, and relative differences – via: I was wondering, that what is the closest value to the Zero floating point can have – G+

Posted by jpluimers on 2015/10/07

A long time ago, there was an interesting discussion here: I was wondering, that what is the closest value to the Zero floating point can have.

Recently I needed to do some calculations on series where getting close to zero could become a problem.

  • Math seems to have an Epsilon of 1E-12.
  • Sytem.Types has Epsilon of 1E-30 and Epsilon2 of 1E-40.
  • XE4+ FMX has IsEssentiallyZero and IsNotEssentiallyZero for Single values.

In practice it depends a lot on what you are doing. Sometimes absolute Epsilons are best, but at other times relative difference is much more applicable.

Then there is also a Machine Epsilon: a way to derive an Epsilon from a data type that works in all languages and platforms.

–jeroen

Posted in .NET, Algorithms, C, C#, C++, Delphi, Development, Floating point handling, Software Development | 1 Comment »

Rudy’s Delphi Corner – Pitfalls of converting, on converting from C/C++ to Delphi

Posted by jpluimers on 2015/09/02

If ever in need to translate C/C++ headers or code to Delphi, this refernece by Rudy Velthuis – a dentist with a strong interest in programming – is the best I could find: Rudy’s Delphi Corner – Pitfalls of converting.

It is written in a pretty version agnostic way, and covers the vast majority of conversion topics.

And it has been updated over time numerous times.

–jeroen

Posted in Borland C++, C, C++, C++ Builder, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 10 Comments »

Windows Kernel object names are optional. Don’t give them a name unless you intend them to be shared. (via: The Old New Thing)

Posted by jpluimers on 2015/07/01

Very interesting:

Kernel object names are optional. Don’t give them a name unless you intend them to be shared.

–jeroen

via: [WayBackYou can name your car, and you can name your kernel objects, but there is a qualitative difference between the two – The Old New Thing – Site Home – MSDN Blogs.

Posted in .NET, C, C++, Delphi, Development, Software Development, The Old New Thing, Windows Development | Leave a Comment »

2 More Old Micro Cornucopia issues on BitSavers from 1986 « The Wiert Corner – irregular stream of stuff

Posted by jpluimers on 2015/06/18

Almost two years ago, I wrote “the only issues missing are #28, #30 and #31.”. As of mid May any more:

All of them are from the 5th anniversary year.

–jeroen

via 2 More Old Micro Cornucopia issues on BitSavers from 1986 « The Wiert Corner – irregular stream of stuff.

Posted in 6502 Assembly, Assembly Language, BitSavers.org, C, C++, Development, History, Pascal, Software Development, Turbo Pascal | Leave a Comment »