C++ 可以/应该C++#pragma预处理器驻留在函数中
简言之,我想制作一个函数,嵌入视觉样式清单,并链接到C++ 可以/应该C++#pragma预处理器驻留在函数中,c++,winapi,linker,pragma,common-controls,C++,Winapi,Linker,Pragma,Common Controls,简言之,我想制作一个函数,嵌入视觉样式清单,并链接到ComCtl32.lib,版本6(如果可用)。以下是我希望做的事情: void InitVivify() { // Embed visual style XML manifest #pragma comment(linker, \ "\"/manifestdependency:type='Win32'" \ " name='
ComCtl32.lib
,版本6(如果可用)。以下是我希望做的事情:
void InitVivify() {
// Embed visual style XML manifest
#pragma comment(linker, \
"\"/manifestdependency:type='Win32'" \
" name='Microsoft.Windows.Common-Controls'" \
" version='6.0.0.0'" \
" processorArchitecture='*'" \
" publicKeyToken='6595b64144ccf1df'" \
" language='*'\"" \
)
// Link common controls library
#pragma comment(lib, "ComCtl32.lib")
// Initialize controls used
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC = ICC_LISTVIEW_CLASSES | ICC_TAB_CLASSES | ICC_USEREX_CLASSES;
InitCommonControlsEx(&InitCtrlEx);
}
我意识到这可能不是一个好的做法,但它有效吗 Pragma指令是预处理器指令。
它们使实现以实现定义的方式运行。
因此,它是有效的,但不受鼓励 C++11标准: 16.6 Pragma指令[cpp.Pragma] 1表单的预处理指令
# pragma pp-tokensopt new-line
使实现以实现定义的方式运行。该行为可能导致翻译失败,或导致翻译器或生成的程序以不一致的方式运行。任何未被实现识别的杂注都将被忽略
Pragma指令是预处理器指令。
它们使实现以实现定义的方式运行。
因此,它是有效的,但不受鼓励 C++11标准: 16.6 Pragma指令[cpp.Pragma] 1表单的预处理指令
# pragma pp-tokensopt new-line
使实现以实现定义的方式运行。该行为可能导致翻译失败,或导致翻译器或生成的程序以不一致的方式运行。任何未被实现识别的杂注都将被忽略
啊,我明白了,预处理器应该是我的提示。每个预处理器都会被无规则地评估,因为它在编译开始之前。因此,即使将其放入函数中也可以完成,但它不会给我想要的行为。我打算将此函数作为静态库的一部分,以便其他人可以链接到它并调用该函数,从而ComCtl32.lib
将在他们的程序中链接。但从你告诉我的,我可以看到,最有可能的不是它将如何工作。啊,我明白了,预处理器应该是我的提示。每个预处理器都会被无规则地评估,因为它在编译开始之前。因此,即使将其放入函数中也可以完成,但它不会给我想要的行为。我打算将此函数作为静态库的一部分,以便其他人可以链接到它并调用该函数,从而ComCtl32.lib
将在他们的程序中链接。但从你告诉我的,我可以看出,最有可能的不是它将如何工作。