其他

作者: yuerxiaoshui | 来源:发表于2020-10-29 09:28 被阅读0次

    1. 关键字缩写

    RVO return value optimizer
    NRVO named return value optimizer
    RAII Resource Acquisition Is Initialization
    SFINAE Substitution Failure Is Not An Error

    2. #pragma pack

    自然对界是指按结构体的成员中size最大的成员对齐。

    #pragma pack 规定的对齐长度,实际使用的规则是:
    结构,联合,或者类的数据成员,第一个放在偏移为 0 的地方,以后每个数据成员的对齐,按照 #pragma pack 指定的数值和结构体的自然对齐长度中比较小的那个进行。

    也就是说,当 #pragma pack 的值等于或超过所有数据成员长度的时候,这个值的大小将不产生任何效果。

    结构体的对齐,按照结构体中size最大的数据成员和 #pragma pack 指定值之间,较小的那个进行。

    3. extern "C''

    extern "C'' 的主要作用就是为了能够正确实现 C++ 代码调用其他C语言代码。加上 extern "C'' 后,会指示编译器这部分代码按 C 语言的进行编译,而不是 C++ 的。由于 C++ 支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而 C 语言并不支持函数重载,因此编译 C 语言代码的函数时不会带上函数的参数类型,一般只包括函数名。

    4. dllimport dllexport

    可以使用 dllimport 或 dllexport 特性来声明 C++ 类。 这些形式表示已导入或导出整个类。 以这种方式导出的类称为可导出类。

    5. 预定义符号

    ./ 表示当前目录
    ../ 表示上级目录
    ../../ 表示上上级目录
    __FILE__ 当前源代码文件名(完整路径)
    __FUNCTION__ 当前源代码函数名
    __LINE__ 当前源代码行号
    __DATE__ 当前编译日期
    __TIME__ 当前编译时间
    __TIMESTAMP__ 当前系统时间戳
    __STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1
    __cplusplus 当用C++编译程序编译时,其就会被定义

    6. 宏指令

    # 空指令,无任何效果
    #include 包含一个源代码文件
    #define 定义宏
    #undef 取消已定义的宏
    #if 如果给定条件为真,则编译下面代码
    #ifdef 如果宏已经定义,则编译下面代码
    #ifndef 如果宏没有定义,则编译下面代码
    #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
    #endif 结束一个 # if...# else 条件编译块
    #error 停止编译并显示错误信息
    #pragma 没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息
    #line directive modifies the reporting position for the compiler, and is used by code generating software to help the programmer identify the issue in the original source. It can be used by anyone to help redirect error reporting to be more informative. (The #line directive tells the preprocessor to change the compiler's internally stored line number and filename to a given line number and filename)

    相关文章

      网友评论

          本文标题:其他

          本文链接:https://www.haomeiwen.com/subject/dtfkvktx.html