C++冷门语法/关键字

这篇文章将用来记录平时第一次遇到的语法或关键字,仅记录我使用到的功能,不进行拓展。

volatile

C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier(内存壁垒)。是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,告诉编译器不要对这个变量进行任何形式的优化,而是始终从变量在内存中的位置进行读取变量的值。

constexpr

定义变量时可以用 constexpr 修饰,从而使该变量获得在编译阶段即可计算出结果的能力,变量必须经过初始化且初始值必须是一个常量表达式。

constexpr static TCHAR * ms_FileSuffix = const_cast<TCHAR*>(_T(#FileSuffix));

 FORCEINLINE

代替inline 关键字.这个关键字将命令编译器跳过一般的ROI 分析,将所对应的代码强行内联。

左值转右值

template <typename T> struct TRemoveReference { typedef T Type; };
template <typename T> struct TRemoveReference<T& > { typedef T Type; };
template <typename T> struct TRemoveReference<T&&> { typedef T Type; };
template <typename T>
FORCEINLINE T&& Forward(typename TRemoveReference<T>::Type& Obj)
{
	return (T&&)Obj;
}
template <typename T>
FORCEINLINE T&& Forward(typename TRemoveReference<T>::Type&& Obj)
{
	return (T&&)Obj;
}

__stdcall

stdca11 调用约定用于调用 Win32 API函教。被调用方将清理堆栈,以便让编译器生成 vararg 函数 __dec1。使用此调用约定的函数需要一个函数原型。_stdca11 修饰符是 Microsoft 专用的。

STDMETHOD

STDMETHOD_是一个宏,用于定义指定返回类型的接口方法,包含virtual关键字,可用于定义方法声明,宏展开是 __stdcall。

THIS_

//TODO

posted @ 2022-12-20 15:14  过往云烟吧  阅读(92)  评论(0)    收藏  举报