C基础(1)

1. 宏定义 + do...while(0)

当宏定义有多行时,需要使用。避免情况:
if(1)
    宏row1
宏row2

2. 宏定义 + 小括号参数

参数使用小括号括起来。避免情况参数是表达式。

3. 结构体中最后一个成员数组长度为[0]
  1. 巧妙实现对结构体扩展。通常都是用指针。
  2. 相较于用指针,不需要初始化。不占用空间。
    struct MyData
    {
        int nLen;
        char data[0];
    };
    int main()
    {
        int nLen = 10;
        char str[10] = "123456789";
        cout << "Size of MyData: " << sizeof(MyData) << endl;
        MyData *myData = (MyData*)malloc(sizeof(MyData) + 10);
        memcpy(myData->data,  str, 10);
        cout << "myData's Data is: " << myData->data << endl;
        free(myData);
        return 0;
    }
	输出:
	Size of MyData: 4
	myData's Data is: 123456789
4. 宏定义 + 连接符#
posted @ 2021-05-31 16:27  风影我爱罗  阅读(29)  评论(0编辑  收藏  举报