小编nul*_*ptr的帖子

Linux 内核编程中的前导下划线

带有下划线“_”前缀的一般用途是指示该实例是通常不(或不应该)直接使用的内部功能。在 C 中,这也用于防止全局范围内的命名冲突。

但是,我的问题是什么决定了使用的下划线的数量?例如,在 Linux 内核中,我们可以看到'_tmp' (一个下划线)'__cacheline_aligned' (两个下划线)'____cacheline_aligned' (四个下划线)的实例。

我的一个想法是,例如,如果一个长内部函数(以下划线前缀)在内部使用另一个函数,则后者将以两个下划线为前缀。

c linux naming-conventions

4
推荐指数
1
解决办法
668
查看次数

顺序行为中的 Readdir()

int indent = 0;
int listDir(const char* dirname){
    DIR* dir;
    struct dirent* d;
    if(!(dir = opendir(dirname)))
        return -1;
    while((d = readdir(dir)) != NULL){
        if(strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0 ){
            continue;
        }
        else if(d->d_type != DT_DIR){ // Any except folders.
            printf("%*s- %s:%ld\n", indent, "", d->d_name, d->d_ino);
        }
        else if(d->d_type == DT_DIR){ // Folders only
            printf("%*s[%s]\n", indent, "", d->d_name);
            char path[1024];
            snprintf(path, sizeof(path), "%s/%s", dirname, d->d_name);
            indent +=2;
            listDir(path);
            indent -=2;
        }
Run Code Online (Sandbox Code Playgroud)

这个函数工作得很好,但唯一的问题是它输出以下结果作为示例: 上述函数的输出

我需要输出是容器文件夹、文件和文件夹。文件夹应位于列表的末尾。例如,上面的输出应该是:

在此处输入图片说明

c sorting readdir partial-ordering

2
推荐指数
1
解决办法
153
查看次数