Vickate_c/c++里面关键字的作用

2022-02-09  本文已影响0人  Vickate

static

如果我们希望全局变量仅限于在本源文件中使用,在其他源文件中不能引用,也就是说限制其作用域只在定义该变量的源文件内有效,而在同一源程序的其他源文件中不能使用。这时,就可以通过在全局变量之前加上关键字 static 来实现,使全局变量被定义成为一个静态全局变量。这样就可以避免在其他源文件中引起的错误。也就起到了对其他源文件进行隐藏与隔离错误的作用,有利于模块化程序设计。

/// 使用静态局部变量最好的示例就是实现统计次数的功能
#include <stdio.h>
void count();
int main(void) {
    int i=0;
    for (i =0;i <=60;i++) {
            count();
    }
    return 0;
}
void count() {
    /*声明一个静态局部变量*/
    static int num;
    num++;
    printf("%d\n",num);
}

因为静态局部变量是在编译时赋初值的,且只赋初值一次,在程序运行时它已有初值。以后在每次调用函数时就不再重新赋初值,而是保留上次函数调用结束时的值。

const

/// 类似使用方式
const string Language = "oc";

使用 const 关键字来声明某个常量字段或常量局部变量。 常量字段和常量局部变量不是变量并且不能修改。 常量可以为数字、布尔值、字符串或 null 引用。

extern

如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。

/// 类似使用方式
extern NSString *const GCDAsyncSocketException;

abstract

abstract可以修饰方法、类。使用abstract修饰的方法和类分别叫做抽象方法和抽象类。

inline

inline是C++关键字,在函数声明或定义中,函数返回类型前加上关键字inline,即可以把函数指定为内联函数。这样可以解决一些频繁调用的函数大量消耗栈空间(栈内存)的问题。

/// 类似使用方式

/// 异步回到主线程执行 使用此方法可避免线程切换
/// @param block 待执行block
static inline void asyncOnMainQueue(dispatch_block_t block) {
    if (!block) {
        return;
    }
    if (NSThread.isMainThread) {
        block();
    } else {
        dispatch_async(dispatch_get_main_queue(), block);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读