windows常用的宏有哪些?

如题所述

第1个回答  2022-10-20
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:

windows C 程序设计中,常用的宏有哪些?

如何定义的?

解析:

C语言中没有宏语句,对宏主要的作用就是以下两个方面,其他的高级作用较难操作,如microsoft公司在MFC中实现的消息映射就是一个很好的例子:

1.多次包含头文件的问题

当你的工程文件很多的时候,就会出现这样的问题:

a.c:

#include "a.h"

#include "b.h"

...

a.h:

#include "b.h"

#include <stdio.h>

...

b.h:

#include <stdio.h>

...

很显然,你在编译a.c的时候,就会造成重复包含头文件的问题。

这个问题有什么危害呢?浪费时间倒是小问题,最大的危害就是:造成重复定义,有可能让你编译失败。

为了避免这个问题,就得用到条件编译

#ifdef

...

#endif

或者

#ifndef

...

#endif

我个人喜欢的作法是这样的:

a.h:

#ifndef _A_H_

#define _A_H_

#include <stdio.h>

#include "b.h"

...

#endif

至于这是什么意思,为什么,怎么用,嘿嘿,看书去。

2.调试问题。

大家在写程序的时候会经常出一些问题,而单步调试速度太慢。

一般常用的作法是在程序的中间加一些printf函数,把某些变量的值打印出来,看看程序在这里是不是正常。

但是当需要生成最终程序的时候,又需要删掉这些printf;如果以后再修改,又要加上……太烦了!!

于是条件编译就成为好帮手了。

比如:

a.c:

#include <stdio.h>

int main()

{

int a=1;

int b=2;

#ifdef _DEBUG_

printf("a=%d,b=%d\n",a,b);

#endif

return 0;

}

我用的是GCC,这样编译:

gcc -D _DEBUG_ a.c -o a.exe

运行a.exe,就会得到a=1,b=2这样的结果。

我再编译

gcc a.c -o a.exe

再运行a.exe,嘿嘿,什么都不输出了。
相似回答