Remove [extern_c] attribute from WinSDK module. #30527
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I've verified that all of the header files in this module already contain their own
extern "C"
blocks that are activated if compiling as C++.The additional
[extern_c]
attribute causes problems for some headers, likePathCch.h
, that define additional overloads of functions when compiled as C++. The "global"[extern_c]
essentially switches off name mangling for these overloads, which causes them to conflict with the functions they are overloading.See here for more context:
#30233 (comment)
See here for an example of failures caused by the [extern_c]:
https://ci-external.swift.org/job/swift-PR-windows/869/console
(Search for "PathCch.h".)