我正在尝试构建一个定义方法howmany()
的代码。
在OSX中,/usr/include/sys/types.h
#define howmany(x, y) __DARWIN_howmany(x, y)
关注a previous question后,我尝试将#undef
包含在头文件中作为
#ifdef howmany
#undef howmany /*undefining '/usr/include/sys/types.h' */
#endif
但是类似函数的宏仍然有效。
/usr/include/sys/types.h:184:9:注意:这里定义的宏'howmany'#define howmany(x,y)__DARWIN_howmany(x,y)/ * #y's == x bits? * /
我应该如何停用这个类似函数的宏?
答案 0 :(得分:0)
这非常脆弱。是的,您可能可以使其工作,但对导入方式的非常小的更改将导致它再次失败(或者更糟糕的是,只是调用错误的代码)。您需要确保#undef
包含在可能包含types.h
的每个文件中,并且在定义后它未定义。这有很多方法可以打破。重命名您的功能。这个名字是。