zoukankan      html  css  js  c++  java
  • 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. 宏定义 + 连接符#
  • 相关阅读:
    #include<unistd.h>存在linux中,含有系统服务的函数
    Value Categories
    Main function
    Phases of translation
    Memory model
    Unqualified name lookup
    Qualified name lookup
    Name lookup
    Definitions
    Object lifetime
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/14831988.html
Copyright © 2011-2022 走看看