免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2408 | 回复: 7
打印 上一主题 下一主题

git里的代码,为什么要返回static [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-02 10:40 |只看该作者 |倒序浏览
abspath.c

static const char *get_pwd_cwd(void)
{
    static char cwd[PATH_MAX + 1];
    char *pwd;
    struct stat cwd_stat, pwd_stat;
    if (getcwd(cwd, PATH_MAX) == NULL)
        return NULL;
    pwd = getenv("PWD");
    if (pwd && strcmp(pwd, cwd)) {
        stat(cwd, &cwd_stat);
        if (!stat(pwd, &pwd_stat) &&
            pwd_stat.st_dev == cwd_stat.st_dev &&
            pwd_stat.st_ino == cwd_stat.st_ino) {
            strlcpy(cwd, pwd, PATH_MAX);
        }
    }
    return cwd;
}

const char *make_nonrelative_path(const char *path)
{
    static char buf[PATH_MAX + 1];

    if (is_absolute_path(path)) {
        if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX)
            die("Too long path: %.*s", 60, path);
    } else {
        const char *cwd = get_pwd_cwd();
        if (!cwd)
            die("Cannot determine the current working directory");
        if (snprintf(buf, PATH_MAX, "%s/%s", cwd, path) >= PATH_MAX)
            die("Too long path: %.*s", 60, path);
    }
    return buf;
}

第二为什么不用static了
什么情况下要这么用啊?

[ 本帖最后由 jronald 于 2008-11-2 10:44 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-11-02 10:44 |只看该作者
static 修饰后,只能在本模块(编译单元)看到。一种隐藏手段。

论坛徽章:
0
3 [报告]
发表于 2008-11-02 10:46 |只看该作者
原帖由 win_hate 于 2008-11-2 10:44 发表
static 修饰后,只能在本模块(编译单元)看到。一种隐藏手段。


开始那个static是修饰整个函数而不是返回值类型?容易发生误解啊。

论坛徽章:
0
4 [报告]
发表于 2008-11-02 11:20 |只看该作者
说的好深奥啊

论坛徽章:
0
5 [报告]
发表于 2008-11-02 11:21 |只看该作者
原帖由 jronald 于 2008-11-2 10:46 发表


开始那个static是修饰整个函数而不是返回值类型?容易发生误解啊。


c 语言中令人想入非非的语法可不止这一处啊

论坛徽章:
0
6 [报告]
发表于 2008-11-02 19:54 |只看该作者
呵呵,楼主把书翻出来看一下就行了

论坛徽章:
0
7 [报告]
发表于 2008-11-02 23:56 |只看该作者

回复 #1 jronald 的帖子

给函数加上static后,只能在本文件中访问。当工程比较大的时候,这个方法很有用的。

lz多看看,static除了修饰函数,还修饰变量。好东东哦

论坛徽章:
0
8 [报告]
发表于 2008-11-03 13:11 |只看该作者
我一看也以为是返回static char *,后来一想,如果是返回静态字符串,应该是声明变量的时候加static的。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP