llvm/llvm-project

#pragma init_seg(section-specifier, func-name) not supported

Open

#148,938 建立於 2025年7月15日

在 GitHub 查看
 (6 留言) (0 反應) (1 負責人)C++ (10,782 fork)batch import
clang:frontendextension:microsoftgood first issueplatform:windows

倉庫指標

Star
 (26,378 star)
PR 合併指標
 (平均合併 1天 2小時) (30 天內合併 1,000 個 PR)

描述

This MSVC pragma is only partially implemented. As detailed here, there is functionality to specify a function to call in place of atexit.

https://learn.microsoft.com/en-us/cpp/preprocessor/init-seg?view=msvc-170

"func-name Specifies a function to be called in place of atexit when the program exits. This helper function also calls atexit with a pointer to the destructor for the global object. If you specify a function identifier in the pragma of the form,

C++

Copy int __cdecl myexit (void (__cdecl *pf)(void)) then your function will be called instead of the C run-time library's atexit. It allows you to build a list of the destructors to call when you're ready to destroy the objects."

Relevant code in ParsePragma.cpp:Parser::HandlePragmaMSInitSeg: // FIXME: Add support for the '[, func-name]' part of the pragma.

Maybe a good early OSS contribution given the limited use and lack of potential for regression

貢獻者指南