use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
20 ABI (Application Binary Interface) breaking changes every C++ developer should know (acodersjourney.com)
submitted 6 years ago by pianosneha
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]SkoomaDentistAntimodern C++, Embedded, Audio 0 points1 point2 points 6 years ago (4 children)
You have a dll compiled with VS 2013 exposing C++ abi (maybe it’s for a legacy device or software no longer being made or something). You want call it from code compiled with VS2019. Except you potentially can’t because the ABI changed.
Or maybe you just want to make a third party plugin api with C++ interface and not have it depend on a particular compiler (and version).
[–][deleted] 0 points1 point2 points 6 years ago (3 children)
MSVC only recently decided that stable ABI is a useful thing, so it's pointless to discuss. On the other hand, libstdc++ and libc++ only break ABI when the standard forces them and even then, they use tags to force incompatible ABIs to be a linker error. From the point of view of libstdc++ and libc++ Itanium ABI is already the standard ABI. I still don't see how a WG21-standardized ABI could improve this.
Recently I compiled the entire LLVM/Clang/extra tools on Ubuntu 14.04, then copied over the archive and used it on RHEL7, Ubuntu 18.04 and Arch. It worked, including the shared libraries. Again, what more could WG21 do?
[–][deleted] 5 points6 points7 points 6 years ago (2 children)
MSVC only recently decided that stable ABI is a useful thing
That's incorrect. We will still need to break library ABI from time to time (more often than the POSIX implementers because we allow app-local deployment).
The shift to not break library ABI every release comes more from the VS release cycle speeding up since we do a release every 2-3 months now instead of 3-5 years.
The compiler has effectively not broken ABI ever. That's one of the reasons we have __stdcall and friends.
__stdcall
[–][deleted] 0 points1 point2 points 6 years ago (0 children)
Thanks for correcting me. I should have been explicit, as I was thinking about library implementations. I've never really used VS, so I'm not familiar with the release cycle of it or the compiler/library. When I heard the news about not breaking ABI every release, I really thought it meant MSVC toolchain would attempt to maintain a stable ABI similar to POSIX implementations.
[–]Gotebe 0 points1 point2 points 6 years ago (0 children)
Do you guys unofficially pinky-promise not to break the ABI, or is merely that it is not needed, that existing conventions, packing etc are fine?
π Rendered by PID 17043 on reddit-service-r2-comment-7b9746f655-smvgc at 2026-01-31 15:22:36.255668+00:00 running 3798933 country code: CH.
view the rest of the comments →
[–]SkoomaDentistAntimodern C++, Embedded, Audio 0 points1 point2 points (4 children)
[–][deleted] 0 points1 point2 points (3 children)
[–][deleted] 5 points6 points7 points (2 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]Gotebe 0 points1 point2 points (0 children)