我如何强制GCC检查前向声明的类的存在
How can I force gcc to check existence of forward declared classes?
添加不现有类 forward声明,例如 class Qwertyuiop
编译和链接而没有错误!
我推断出,未检查前向声明的类的存在,未检查(除非我们调用未定义的方法)。
看来它们被认为只不过是void *
。
考虑C/C 汇编过程这很有意义。
但是,为了改善程序的正确性,具有检查前向声明类的存在的方法可能很有用。
只需写static_assert(sizeof(Qwertyuiop)>0, "Qwertyuiop is defined")
。
显然,您无法检查一个翻译单元是否在另一个TU中定义;这与单独的翻译不相容。Tu可以按任何顺序编译。
相关文章:
- .cpp和.h文件中的模板专用化声明
- C++模板来检查友元函数的存在
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 文件存在时的最新检查声明生成输入"is missing"
- 我如何强制GCC检查前向声明的类的存在
- 未在此作用域中声明函数,即使存在头文件也是如此
- C SQLITE3代码似乎在准备声明方面存在问题
- 定义中未声明的标识符错误 C2065,显然存在
- 声明c++中存在冲突的说明符
- 头文件中存在重复的类声明
- 声明在 Linux 上存在有关 X11 图形库的问题
- 在测试已声明但未定义的运算符是否存在时,static_assert真的应该成功吗?
- 如何声明在条件块之间持久存在的引用变量
- 为什么 g++ 声明某些 valarray o 存在"no matching function for call cbegin(o)"<double>?
- 在函数中声明非指针变量是否存在内存泄漏
- C++错误:声明中存在显式限定
- 由于模板函数声明中存在歧义而导致错误
- 错误:对旧声明“double-round(double)”存在歧义