编译器内置的宏 VC中怎么显示这些宏定义,编译原理,词法分析,语法分析

开水泡面 2011-11-26 12:15:27
我们知道
在gcc中 gcc -dM -E test.c 就会显示出预定义宏,
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define _WIN32 1
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 65535U
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT__METHOD__ 2
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 0
#define _stdcall __attribute__((__stdcall__))
#define __DEC64_MAX_EXP__ 385
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __GXX_TYPEINFO_EQUALITY_INLINE 0
#define __UINTMAX_TYPE__ long long unsigned int
#define __DEC32_EPSILON__ 1E-6DF
#define __LDBL_MAX_EXP__ 16384
#define __SCHAR_MAX__ 127
#define __DBL_DIG__ 15
#define __SIZEOF_INT__ 4
#define __SIZEOF_POINTER__ 4
#define __USER_LABEL_PREFIX__ _
#define __STDC_HOSTED__ 1
#define __WIN32 1
#define __LDBL_HAS_INFINITY__ 1
#define __FLT_EPSILON__ 1.19209290e-7F
#define __LDBL_MIN__ 3.36210314311209350626e-4932L
#define __DEC32_MAX__ 9.999999E96DF
.....................................
1>那么 vc 中怎么才能显示出来这些呢?
2>这个是不是编译器在做 词法分析 语法分析 的时候定义的,也就是不能看到实现的源代码 是么?
跪求答案,
...全文
301 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 h3139597 的回复:]

引用 1 楼 akirya 的回复:

1 MSDN上有列出
2 不是,跟使用参数-D宏 一起做处理的。

好多个/D 哦 应该去掉哪个呢?诚求答案
[/Quote]
就是编译器内置的宏 跟编译选项中 /D定义的宏是同样的进行处理的
  • 打赏
  • 举报
回复
1 MSDN上有列出
2 不是,跟使用参数-D宏 一起做处理的。
gameslq 2011-11-26
  • 打赏
  • 举报
回复
>>好多个/D 哦 应该去掉哪个呢?诚求答案
增加 /P预编译选项,会生成后缀名.i的文件
是编译器编译之前的所有预处理,当然也包括宏替换。
开水泡面 2011-11-26
  • 打赏
  • 举报
回复
楼上的图片是这个
开水泡面 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]

1 MSDN上有列出
2 不是,跟使用参数-D宏 一起做处理的。
[/Quote]
好多个/D 哦 应该去掉哪个呢?诚求答案
开水泡面 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]

1 MSDN上有列出
2 不是,跟使用参数-D宏 一起做处理的。
[/Quote]
第一个找到了,
不过只有宏说明
__FILE__
The name of the current source file. __FILE__ expands to a string surrounded by double quotation marks. To ensure that the full path to the file is displayed, use /FC (Full Path of Source Code File in Diagnostics).

You can create your own wide string version of __FILE__ as follows:

Copy Code
#include <stdio.h>
#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
#define __WFILE__ WIDEN(__FILE__)
wchar_t *pwsz = __WFILE__;

int main() {}


跟使用参数-D宏 一起做处理的。 是什么意思呢?要是没有参数—D是不是 就不能识别了?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧