在编译xterm时,我遇到了一个名为
的配置选项--enable-narrowproto enable narrow prototypes for X libraries
(需要取消此选项才能使滚动条在Cygwin下与--disable-imake
一起使用。)
我知道在K& R C中,原型并不存在,并且所有小于int
或double
的参数都会进行促销。搜索ISO C99标准是空的。究竟什么是窄原型?对称性是否有宽原型?如果我不使用狭窄的原型,会出现什么样的潜在问题?
答案 0 :(得分:5)
在NARROWPROTO
中使用Xfuncproto.h
宏来定义另一个宏
#ifdef NARROWPROTO
#define NeedWidePrototypes 0
#else
#define NeedWidePrototypes 1 /* default to make interropt. easier */
#endif
NeedWidePrototypes
反过来在Xlib.h
中使用,例如以下列方式
extern XModifierKeymap *XInsertModifiermapEntry(
XModifierKeymap* /* modmap */,
#if NeedWidePrototypes
unsigned int /* keycode_entry */,
#else
KeyCode /* keycode_entry */,
#endif
int /* modifier */
);
KeyCode
是来自typedef
X.h
typedef unsigned char KeyCode;
所以我猜这里narrow
,引用KeyCode
所用类型的宽度。
可以在其他文件中找到相同typedef
的相同构造,例如XKBlib.h
答案 1 :(得分:1)
除了在INSTALL中注明之外,它还是一个常见问题解答,几年内的热门话题Why doesn't the scrollbar work?(另见2006期间更改日志中的注释)