c/c++使用宏函数是不是好习惯

稀饭桶子 发布于 2016/08/25 11:32
阅读 3K+
收藏 0

写代码的时候,当发现有很多代码可以用都是相似的,

就忍不住用宏来生成代码。

可是宏也会导致程序可读性没那么好,bug难调。

不知道大神们在编程的时候是怎么使用宏的呢?

加载中
1
木兰宿莽
木兰宿莽
驱动经常会使用到,比方:#define LOG() printk("file:%s,function:%s,line:%d\n",__FILE__,__func__,__LINE__)这样打log的宏函数,但我想做应用层开发的话,一般会用inline吧?
0
同城陌路人
同城陌路人
大部分情况下,从宏的使用上可以看出一个人的水平
0
刘大神
刘大神
c++里面可以用inline取代宏,但是,并不是所有的宏都适合去替换
0
huantao
huantao
C语言编程中用少量的宏定义可以使程序修改起来很方便,比如一些经常需要用的常数   只需要修改宏而不用跑到程序里去一个一个改。但涉及到单片机编程的话,我觉得尽量少用,要用的话也在.c文件里用,不要在头文件里面写宏定义    
0
v
vancy2011
宏函数意味着有一群使用一样函数的东东,意味着这些东东的行为是一样的,意味着没有使用继承和多态对这些东东进行抽象化,意味着软件架构设计不好,需要进一步优化。
0
和哈和哈
用inline函数代替宏函数
0
gotham
gotham
能不用就不用,感觉使用c++11 14倒是能少写不少代码。宏基本上只会代来混乱。
0
阿小莫
阿小莫
C++之父有提到过这方面,大意是宏能不用就不要用,因为宏在有些时候展开的结果不是你想要的。 
0
Lyzh_
Lyzh_

引用来自“一如当初”的评论

宏和模板,能不用就不用。

表示不赞同,宏可用于增加可读性

例如 #define    WINDOW_OFF    0x08

模板倒没什么说的,需要处理动态字符串的时候用吧

0
S
SmallCroco

宏和模板都是为了减少写代码的量,同时是为了方便将来的修改,比如像C语言中用宏代替数字,修改的时候只改一次。我就很喜欢用宏和模板,写出来的代码很漂亮,同时代码量很少,后期修改维护起来很容易。

比如我现在写的:

namespace Nti { namespace Http {

class RequestMethod
{
    ENUMERABLE(RequestMethod , Details::_RequestMethodKey)

    ENUMERABLE_ITEM(RequestMethod , Get , Details::GET)
    ENUMERABLE_ITEM(RequestMethod , Post , Details::POST)
    ENUMERABLE_ITEM(RequestMethod , Head , Details::HEAD)
    ENUMERABLE_ITEM(RequestMethod , Options , Details::OPTIONS)
    ENUMERABLE_ITEM(RequestMethod , Put , Details::PUT)
    ENUMERABLE_ITEM(RequestMethod , Delete , Details::DELETE)
    ENUMERABLE_ITEM(RequestMethod , Trace , Details::TRACE)
    ENUMERABLE_ITEM(RequestMethod , Connect , Details::CONNECT)    

} ;

} }

这样一个类写出来,基本上就是几个宏就写完了,微软通常也采用这种方法,你如果看过MFC的代码就知道了

返回顶部
顶部