2

When I browse through VC CRT sources, I sometimes see two separate implementations (for example, the new operator), one for when _SYSCRT is defined and another for when _SYSCRT is undefined.

Now, _SYSCRT may well be undocumented but I'm debugging CRT code and _SYSCRT is right there in my face. So the question is: should I assume it defined or not defined during "normal use"?

By "normal use" I mean linking with a Win32 user-mode application in MSVC 2015.

rustyx
  • 80,671
  • 25
  • 200
  • 267
  • It begins with an underscore and a capital letter, so it is reserved for the implementation and you should not be using it. – Raymond Chen Sep 23 '15 at 20:00
  • 2
    @RaymondChen : The "reserved for implementation" rule merely means that you should not define macros with such names, not that you cannot use them. The question does not ask about using it, but rather what it is for; "reserved for implementation" does not prohibit curiosity either! – Clifford Sep 23 '15 at 20:16
  • 1
    `_SYSCRT` is not documented. therefore, don't define it, don't conditionalize on it, don't use it. – Raymond Chen Sep 23 '15 at 21:25
  • I'm not going to use it. I want to know what it is for. So that I better understand how the crt works. – rustyx Sep 23 '15 at 21:43
  • 1
    The group at Microsoft that maintains the CRT has a pretty difficult customer. Microsoft. And Raymond. They can innovate on the CRT as necessary to implement evolving language standards but they can't break the operating system. `_BOOTCRT_` looks like another one. – Hans Passant Sep 23 '15 at 23:50

0 Answers0