【发布时间】:2023-03-18 04:08:01
【问题描述】:
我有一个成员函数,它返回对类的 CString 成员的引用。它看起来像这样:
const CString& GetDateFormat() const { return MyString; }
我使用的是 Visual Studio 2015,每当我键入此函数时,IDE 都会自动将其更改为 GetDateFormatA()。当我转到函数定义并将鼠标悬停在函数名称上时,我看到:
#define GetDateFormat GetDateFormatA
所以就像VS自动创建了这个宏一样。
该函数工作正常,但我已经多次看到这个(我的意思是一个函数 - 由其他人编写 - 通过附加 A 的宏重命名它),我很好奇并且有点困惑。目的是什么?它与字符编码或至少与字符串有关吗?
【问题讨论】:
-
宏在您编写函数之前就已存在。
-
那么这个宏是在哪里定义的呢?
-
@UKMonkey 给定
A后缀,很可能是<windows.h>(或其中包含的标头)。这就是 Windows 区分基于char和基于wchar_t的例程的方式。 -
@Angew 我不反对——但问一下也无妨……如果它在“MyEpicClass.h”中并且是自动生成的,那么这是一个非常合理的问题。
-
请发布(和谷歌)函数的确切名称。您可能会发现有一个同名的 WinAPI 函数,它可以帮助您解释行为。
标签: c++ visual-studio-2015 macros