不定义专有编译器宏潜伏着什么危险

What dangers lurk by un-defining proprietary compiler macros?

本文关键字:潜伏着 什么 危险 编译器 定义      更新时间:2023-10-16

在我的C++类中,我有一个私有变量定义为

unsigned int _MT;

在我尝试使用英特尔C++编译器之前,这工作正常。当我使用英特尔编译器(版本 15.0.xx)时,出现错误:

... error: expected an identifier
      unsigned int _MT;
                   ^

经过仔细检查,我发现英特尔有一个预定义的(和专有的)宏_MT。我不完全清楚这个宏是做什么的。我确实知道它只为 64 位架构定义 — 如今几乎每个平台都是如此。

取消定义此宏有什么危险?

使用以下划线开头后跟大写字母的变量是未定义的行为

别这样。

(我见过_MT代表"使用多线程运行时")。