跳至主要內容
杂项

uint32 int32 -1 相等判断

#define RT_WAITING_FOREVER -1

int main(int argc, char *argv[]) {
    uint32_t timeout = 0;
    timeout = -1;

    if (timeout == RT_WAITING_FOREVER) {
        printf("==\r\n");
    } else {
        printf("!=\r\n");
    }

    return 0;
}

马龙伟...小于 1 分钟笔记C/C++
柔性数组

参考链接

C语言中的柔性数组 C语言结构体中char[0]和char[1]的用法

实现机制

在结构体最后加 char[0]char[1] 的用法是GNU C的扩展,在ISO/IEC 9899-1999里面,这么写是非法的。

这种用法在C99中叫做 柔性数组。柔性数组成员前面必须至少有一个其它类型成员。包含柔性数组成员的结构要用malloc进行动态内存分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。


马龙伟...大约 3 分钟笔记C/C++
达夫设备

参考链接

C语音冷门知识点:达夫机!switch还可以这么玩

代码实现

void send( int * to, int * from, int count)
{
    int n = (count + 7 ) / 8 ;
    switch (count % 8 ) {
    case 0 :    do { * to ++ = * from ++ ;
    case 7 :          * to ++ = * from ++ ;
    case 6 :          * to ++ = * from ++ ;
    case 5 :          * to ++ = * from ++ ;
    case 4 :          * to ++ = * from ++ ;
    case 3 :          * to ++ = * from ++ ;
    case 2 :          * to ++ = * from ++ ;
    case 1 :          * to ++ = * from ++ ;
           } while ( -- n >    0 );
    }
}

马龙伟...大约 3 分钟笔记C/C++
C/C++代码格式化

设置方式

打开 文件->首选项->设置, 搜索 C_Cpp.clang_format_style

C_Cpp.clang_format_style
C_Cpp.clang_format_style

Linux 内核排版样式

{ BasedOnStyle: LLVM, IndentWidth: 4, ColumnLimit: 0, UseTab: Never, SortIncludes: false, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, AlignConsecutiveMacros: true }

马龙伟...小于 1 分钟软件/工具教程C/C++VS Code