Table of Contents
Is your compiler set to use the CLANG compiler in the IDE options?
If you are developing apps using lesser known C++ compilers, or maybe your legacy projects are starting to show their age, we highly recommend you switch to a CLANG C++ compiler which supports the latest C++ standards. This switch may result in some errors and warnings in your code but be sure that CLANG is a standard in C++ and this allows you to develop more friendly and powerful C++ applications in the future.
CLANG is considered to be a production quality C, Objective-C, C++ and Objective-C++ compiler when targeting X86-32, X86-64, and ARM. It is a new C/C++ compiler standard (C++98, C++11, C++17, C++20, C++23 ..) supported by The LLVM Compiler Infrastructure Project, and has been a default compiler in recent years for most C/C++ compilers. This means that if you code for a CLANG compiler, most other IDEs, Compilers of Platforms will support your code without any changes. The latest C++17 standard is supported by the most C++ compilers. More information about core language features can be found here.
We highly recommend you start with or to move to a CLANG-enhanced compiler like the Embarcadero’s C++ Builder, which supports the CLANG (C++11, C++ 17) standard and has its own C++ Compiler, IDE, GUI Designer and more. The C++Builder Standards and Clang Enhanced Compiler features can be found here.
The C++ Builder Community Edition is a free edition and can be used by students, beginners and startups.
You can download it here Free C++ Builder Community Edition.
Professional developers can use the Professional, Architect or Enterprise versions of the C++ Builder. Please visit https://www.embarcadero.com/products/cbuilder.
CLANG is supported by many other Development IDEs Like Visual Studio, VS Code, Dev C++. CodeBlocks, CLion etc. For more details please see our article on the LearnCplusPlus.org website about the Top 6 C++ IDEs For Building Native Windows Apps.
Are you using TwineCompile?
TwineCompile is a good solution to speed up your compile times. The developer says it may improve your compile time up to 50 times and he’s not wrong! It integrates directly into the C++Builder IDE, where drastically reduces the compile/make/build times by employing techniques such as multi-threading, file caching and automatic background compiling.
What are the features of TwineCompile?
- Advanced compile system uses multi-threading technology and caching techniques to make C++ compiles 50x faster!
- Automatic background compiling engine ensures that files are compiled as fast as they are saved!
- Tuned pre-compiled header handling system automatically maximizes simultaneous use of pre-compiled headers between multiple threads!
- Seamless integration into the C++Builder IDE. Supports all versions including C++Builder 11.0!
- Theme support for all IDE themes providing a unified workspace!
- Full support for 32-bit and 64-bit compilers!
- Parallel project build support compiles multiple projects in parallel, drastically reducing the time to build complex project groups!
- FinalBuilder integration provided out of the box!
More details can be found in their official web page here
Have you checked the OS Platform is compiled in C++ Builder with predefined macros?
If you want a successful completion in all OS platforms, you can add some more OS specific code lines to cater for some subtle differences between the device capabilities. For example using cameras and sensors in different OSes have different requirements during compilation and at runtime. These kinds of requirements may be needed in low-level operations or in backend and frontend applications. You can easily add or modify your OS based code with scopes of predefined macros.
To understand compile platform you can use Predefined Macros to check platform operating system. There are CLANG Predefined Macros listed by LLVM.org here . Here below we listed some #if / #endif examples. The #definitions defined like this affect the way the code is compiled according to the expressions you add to them, so if an expression evaluates as
false in an #if clause it is not compiled and is completely eliminated from the final exe or app package. For example if you check your application is for Windows or not, your Windows specific code is only compiled if it is compiled for Windows. By using these kind of Predefined Macros, all irrelevant code will not be included and this lets your final compiled file size be as small as possible.
These kinds of pre-defined macros and compiler definitions can also be used to implement different ‘switchable’ functionality from the same code base. So, for example, if you had a trial version of your app you could wrap code and functionality which you do not want to include in the trial version in a statement such as
#ifdef TRIAL and then elsewhere include
#define TRIAL (or put it in the conditional defines section of the app’s options). For the full version you simply do not set the
TRIAL define and the full functionality will be included. That way you keep one codebase for both the trial and full version of your app which results in greater efficiency too.
You can use Predefined Macros to check platform’s operating system ‘bitness’ level too. Here in the post below, we listed some
#endif examples. With these examples below you can check if your app is compiled for 32bit or 64bit options. In some cases 64bit operations requires more specific variable types and math operations. Thus you can easily include or exclude your necessary 64bit and 32bit code lines. These may improve your application’s performance.
RAD Studio 11.2 can help you visualize areas of your code which will not get compiled
One great new feature of RAD Studio 11.2 is the ability for the IDE’s code editor to show areas of unused code in a dimmed font:
This feature helps you work better with compiler defines or predefined macros by showing you the areas of code which will not get included in the final app’s executable package. In the example shown above the first line beginning “
Result :=” will not get executed or even included in the final app because the predefined
AUTOREFCOUNT compiler variable is not set to
It’s a very useful feature, a small change really, but with an extremely useful outcome allowing you to easily get a sense of when something is wrong if you see a grayed-out block of code which you were expecting to otherwise work.
You can read more about this RAD Studio 11.2 feature, and others, in this blog post.
C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, MacOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs.
There is a free C++ Builder Community Edition for students, beginners, and startups; it can be downloaded from here. For professional developers, there are Professional, Architect, or Enterprise versions of C++ Builder and there is a trial version you can download from here.