- 论坛徽章:
- 0
|
c 语言初学者.
现在对.h文件有一些困惑,期待大家的解惑.
----------------------------------------------------------
问题描述:
环境: win2k /Linux
compile: tc2
如:
#include <ctype.h>
后在程序中可以使用tolower() 函数.
在ctype.h文件中有:
#define _tolower(c) ((c) + 'a' - 'A')
int _Cdecl tolower(int ch);
在linux 下,我看了ctype.h文件:
1种. 直接定义 tolower() --MACRO--
2种. static inline unsigned char __tolower(unsigned char c)
{
if (isupper(c))
c -= 'A'-'a';
return c;
}
#define tolower(c) __tolower(c) .有了这个就很好理解,没什么问题
----------------------------------------------------------
我的疑惑:
在 windows中 程序如何通过tolower() 调用到了_tolower()?!
我目前知道的是,c的函数调用会有几种不同的方式(_Cdecl,stdcall之类), 代码编译后函数名称会变成
_MethodName().
如果是通过因为编译后名称 变成 _MethodName()的话, 我自己写个.h文件 使用这种方式,同样的环境
my.h
#define _mytool(c) ((c) + 'a' - 'A')
int _Cdecl mytool(int ch);
,却不能编译通过.提示定义的函数mytool()未定义,排除了头文件包含路径不对的情况.
如果直接引用_mytool()就可以正常工作.
[ 本帖最后由 PninoH 于 2007-11-5 10:31 编辑 ] |
|