Misplaced Pages

Microsoft Visual C++

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

Microsoft Visual C++ ( MSVC ) is a compiler for the C , C++ , C++/CLI and C++/CX programming languages by Microsoft . MSVC is proprietary software ; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API , DirectX and .NET .

#796203

34-434: Many applications require redistributable Visual C++ runtime library packages to function correctly. These packages are frequently installed separately from the applications they support, enabling multiple applications to use the package with only a single installation. These Visual C++ redistributable and runtime packages are mostly installed for standard libraries that many applications use. The predecessor to Visual C++

68-540: A command-line interface or graphical user interface . This does not include application software bundled within operating systems such as a software calculator or text editor . C11 (C standard revision) C11 (previously C1X , formally ISO/IEC 9899:2011 ), is a past standard for the C programming language. It replaced C99 (standard ISO/IEC 9899:1999) and has been superseded by C17 (standard ISO/IEC 9899:2018). C11 mainly standardizes features already supported by common contemporary compilers, and includes

102-404: A geography application for Microsoft Windows , or an Android application for education , or a Linux game . Sometimes a new and popular application arises that only runs on one platform , increasing the desirability of that platform. This is called a killer application or killer app , coined in the late 1980s. For example, VisiCalc was the first modern spreadsheet software for

136-509: A certain feature or not. Some features of C11 are supported by the GCC starting with version 4.6, Clang starting with version 3.1, IBM XL C starting with version 12.1, and Microsoft Visual C++ starting with VS 2019 (16.8) in September 2020. The optional bounds-checking interfaces (Annex K) remain controversial and have not been widely implemented, and their deprecation or removal from

170-684: A contentious debate in the computing community regarding web applications replacing native applications for many purposes, especially on mobile devices such as smartphones and tablets . Web apps have indeed greatly increased in popularity for some uses, but the advantages of applications make them unlikely to disappear soon, if ever. Furthermore, the two can be complementary, and even integrated. Application software can also be seen as being either horizontal or vertical . Horizontal applications are more popular and widespread, because they are general purpose, for example word processors or databases. Vertical applications are niche products , designed for

204-614: A detailed memory model to better support multiple threads of execution. Due to delayed availability of conforming C99 implementations, C11 makes certain features optional, to make it easier to comply with the core language standard. The final draft, N1570, was published in April 2011. The new standard passed its final draft review on October 10, 2011 and was officially ratified by ISO and published as ISO/IEC 9899:2011 on December 8, 2011, with no comments requiring resolution by participating national bodies. A standard macro __STDC_VERSION__

238-533: A later date. In version 17.5, partial (since atomic locks are missing) and experimental (meaning hidden behind the compiler flag /experimental:c11atomics ) support for atomics was added and in version 17.8, support for threads was added, this time not behind a compiler flag. With default settings MSVC does not do two-phase name lookup which prevents it from flagging a wide range of invalid code. Most checks are deferred to template instantiation. More recent versions remedy this behavior, but it needs to be enabled by

272-467: A lifetime, or forever). Since the development and near-universal adoption of the web , an important distinction that has emerged, has been between web applications — written with HTML , JavaScript and other web-native technologies and typically requiring one to be online and running a web browser — and the more traditional native applications written in whatever languages are available for one's particular type of computer . There has been

306-747: A particular type of industry or business, or department within an organization. Integrated suites of software will try to handle every specific aspect possible of, for example, manufacturing or banking worker, accounting, or customer service. There are many types of application software: Applications can also be classified by computing platforms such as a desktop application for a particular operating system , delivery network such as in cloud computing and Web 2.0 applications, or delivery devices such as mobile apps for mobile devices . The operating system itself can be considered application software when performing simple calculating, measuring, rendering, and word processing tasks not used to control hardware via

340-403: A stable ABI, and binaries built with these versions can be mixed in a forwards-compatible manner, noting the following restrictions: Visual C++ ships with different versions of C runtime libraries. This means users can compile their code with any of the available libraries. However, this can cause some problems when using different components ( DLLs , EXEs ) in the same program. A typical example

374-411: Is a computer program designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end-users . Word processors , media players , and accounting software are examples. The collective noun " application software " refers to all applications collectively. The other principal classifications of software are system software , relating to

SECTION 10

#1732798470797

408-412: Is a computer program designed to help people perform an activity. Depending on the activity for which it was designed, an application can manipulate text, numbers, audio, graphics, and a combination of these elements. Some application packages focus on a single task, such as word processing; others called integrated software include several applications. User-written software tailors systems to meet

442-518: Is a program using different libraries . The user should use the same C Run-Time for all the program's components unless the implications are understood. Microsoft recommends using the multithreaded , dynamic link library (/MD or /MDd compiler option) to avoid possible problems. Although Microsoft's CRT implements a large subset of POSIX interfaces, the Visual C++ compiler will emit a warning on every use of such functions by default. The rationale

476-469: Is defined with value 201112L to indicate that C11 support is available. The standard includes several changes to the C99 language and library specifications, such as The new revision allows implementations to not support certain parts of the standard — including some that had been mandatory to support in the 1999 revision. Programs can use predefined macros to determine whether an implementation supports

510-437: Is especially the case for STL containers, where container sizes have varied a lot between compiler releases. Microsoft therefore recommends against using C++ interfaces at module boundaries when one wants to enable client code compiled using a different compiler version. Instead of C++, Microsoft recommends using C or COM interfaces, which are designed to have a stable ABI between compiler releases. All 14.x MSVC releases have

544-459: Is not restricted to the "of or on application software" meaning. For example, concepts such as application programming interface (API), application server , application virtualization , application lifecycle management and portable application apply to all computer programs alike, not just application software. Some applications are available in versions for several different platforms; others only work on one and are thus called, for example,

578-526: Is occasionally the object of controversy. For example, one of the key questions in the United States v. Microsoft Corp. antitrust trial was whether Microsoft's Internet Explorer web browser was part of its Windows operating system or a separate piece of application software. As another example, the GNU/Linux naming controversy is, in part, due to disagreement about the relationship between

612-489: Is royalty-free and - openly or reservedly- can be run, distributed, modified, reversed, republished, or created in derivative works without any copyright attribution and therefore revocation . It can even be sold, but without transferring the public domain property to other single subjects. Public-domain SW can be released under a (un)licensing legal statement, which enforces those terms and conditions for an indefinite duration (for

646-453: Is that C and C++ standards require an underscore prefix before implementation-defined interfaces, so the use of these functions are non-standard. However, systems that are actually POSIX-compliant would not accept these underscored names, and it is more portable to just turn off the warning instead. Although the product originated as an IDE for the C programming language, for many years the compiler's support for that language conformed only to

680-583: The Linux kernel and the operating systems built over this kernel . In some types of embedded systems , the application software and the operating system software may be indistinguishable from the user, as in the case of software used to control a VCR , DVD player, or microwave oven . The above definitions may exclude some applications that may exist on some computers in large organizations. For an alternative definition of an app: see Application Portfolio Management . The word "application" used as an adjective

714-513: The Windows Store , the term was extended in popular use to include desktop applications. There are many different and alternative ways to classify application software. From the legal point of view, application software is mainly classified with a black-box approach , about the rights of its end-users or subscribers (with eventual intermediate and tiered subscription levels). Software applications are also classified with respect to

SECTION 20

#1732798470797

748-532: The Apple II and helped sell the then-new personal computers into offices. For Blackberry it was their email software. The shortened term "app" (coined in 1981 or earlier ) became popular, with the 2008 introduction of the iOS App Store , to refer to applications for mobile devices such as smartphones and tablets . Later, with the 2010 introduction of the Mac App Store and the 2011 introduction of

782-573: The C99 support, with full support of the C99 Standard Library, except for features that require C99 language features not yet supported by the compiler. Most of the changes from the C11 revision of the standard were still not supported by Visual C++ 2017. For example, generic selections via the _Generic keyword are not supported by the compiler and result in a syntax error. The preprocessor

816-533: The command-line option /permissive- . Describing it as "excellent", BYTE in February 1989 approved of Microsoft C 5.1's OS/2 support, QuickC for interactive development, and CodeView debugger. Although Watcom C produced slightly faster code, the magazine said that developers "might still prefer Microsoft's friendlier and more powerful tools". Application software An application program ( software application , or application , or app for short)

850-559: The compiler. An example of _MSC_VER is 1933 to represent version 19.33 of the Microsoft C/C++ compiler, and of _MSC_FULL_VER is 193331630. The Visual product version, such as "17.3.4", designates the version of Visual Studio with which version 19.33 of the compiler was packaged. Then there is the Microsoft Visual C/C++ Runtime Library version, e.g. "14.3". From this, one can also deduce

884-480: The early Microsoft C compiler days. This is the version returned by running the command cl.exe on its own without any options. By taking two digits after the decimal and dropping the decimal point, this also becomes the value of the C pre-processor macro: _MSC_VER , and the CMake variable: MSVC_VERSION . A longer version of the C macro is _MSC_FULL_VER to make more finely-grained distinctions between builds of

918-440: The operation of the computer, and utility software ("utilities"). Applications may be bundled with the computer and its system software or published separately and may be coded as proprietary , open-source , or projects. When referring to applications for mobile devices such as phones, the term "app" is more commonly used. In information technology, an application ( app ), an application program , or application software

952-424: The original edition of the C standard , dating from 1989, but not the C99 revision of the standard. There had been no plans to support C99 even in 2011, more than a decade after its publication. Visual C++ 2013 finally added support for various C99 features in its C mode (including designated initializers, compound literals, and the _Bool type), though it was still not complete. Visual C++ 2015 further improved

986-734: The programming language in which the source code is written or executed, and concerning their purpose and outputs. Application software is usually distinguished into two main classes: closed source vs open source software applications, and free or proprietary software applications. Proprietary software is placed under the exclusive copyright, and a software license grants limited usage rights. The open-closed principle states that software may be "open only for extension, but not for modification". Such applications can only get add-ons from third parties. Free and open-source software (FOSS) shall be run, distributed, sold, or extended for any purpose, and -being open- shall be modified or reversed in

1020-409: The same way. FOSS software applications released under a free license may be perpetual and also royalty-free . Perhaps, the owner , the holder or third-party enforcer of any right ( copyright , trademark , patent , or ius in re aliena ) are entitled to add exceptions, limitations, time decays or expiring dates to the license terms of use. Public-domain software is a type of FOSS which

1054-526: The toolset version, which can be obtained by taking the first three digits of the runtime library version and dropping the decimal, e.g. "143". It includes the Visual C/C++ runtime library, as well as compilers, linkers, assemblers, other build tools, and matching libraries and header files. The following is a (scrapeable) table of the known correlated version numbers. The Visual C++ compiler ABI has historically changed between major compiler releases. This

Microsoft Visual C++ - Misplaced Pages Continue

1088-417: The user's specific needs. User-written software includes spreadsheet templates, word processor macros, scientific simulations, audio, graphics, and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. The delineation between system software such as operating systems and application software is not exact, however, and

1122-462: Was called Microsoft C/C++ . There was also a Microsoft QuickC 2.5 and a Microsoft QuickC for Windows 1.0. The Visual C++ compiler is still known as Microsoft C/C++ and as of the release of Visual C++ 2015 Update 2, is on version 14.0.23918.0. There are several different version numbers to consider when working with Visual C or C++. The oldest and most original of these is the compiler version number, which has been monotonically increased since

1156-741: Was overhauled in 2018, with C11 in sight: Full C11 conformance is on our roadmap, and updating the preprocessor is just the first step in that process. The C11 _Generic feature is not actually part of the preprocessor, so it has not yet been implemented. When implemented I expect the feature to work independently of if the traditional or updated preprocessor logic is used. _Generic support has been committed to MSVC as of February 2020. In September 2020, Microsoft announced C11 and C17 standards support in MSVC would arrive in version 16.8. This did not include optional features but Microsoft indicated that they were planning to add support for atomics and threads at

#796203