我正在浏览printf
之类的函数的glibc实现的源代码,例如vsnprintf
,fprintf
,vfprintf
等,它们都包含{{1} }或#ifndef COMPILE_WPRINTF
。
试图在网上查找#ifdef COMPILE_WPRINTF
的定义,但没有任何内容。
我认为这与宽字符类型COMPILE_WPRINTF
有关(因此wchar_t
中的W
是因为),例如vfprintf包含以下代码:
COMPILE_WPRINTF
但是我很想知道在哪里定义此定义,有人可以指出吗?
答案 0 :(得分:2)
stdio-common/vfwprintf.c
看起来像这样:
#include <wctype.h>
#define COMPILE_WPRINTF 1
#include "vfprintf.c"
本质上,stdio-common/vfprintf.c
被编译两次(针对每个构建变体),一次未定义COMPILE_WPRINTF
,一次被COMPILE_WPRINTF
。之所以这样编写代码,是因为两个变体之间共享许多源。