static_assert编译成二进制文件
Is static_assert compiled into the binary file
我想在我的 C++11 项目中使用 static_assert
来做一些编译时检查。
据我了解,static_assert
不会在运行时执行,对吗?
如果是这样,当我通过执行有关编译的命令编译我的项目时,例如gcc ...
,编译器会将static_assert
构建到二进制文件中,或者static_assert
将被完全忽略,就像评论一样?
Is static_assert compiled into the binary file
没有
As my understanding, static_assert won't be executed at runtime, right?
没错。
the compiler will build the static_assert into the binary file
没有
the static_assert will be totally ignored, just like a comment?
不,这不是评论 - 检查表达式,如果表达式为假,则会显示一条消息。当表达式不是常量(无法在编译时计算)时,也会显示一条消息。
与旧的 assert()
不同,后者是运行时测试,static_assert
由编译器测试,如果不满足会导致编译时错误。或者如果不能静态测试...
那么在运行时,已经知道是真的,不需要再测试了。
我想在我的 C++11 项目中使用 static_assert
来做一些编译时检查。
据我了解,static_assert
不会在运行时执行,对吗?
如果是这样,当我通过执行有关编译的命令编译我的项目时,例如gcc ...
,编译器会将static_assert
构建到二进制文件中,或者static_assert
将被完全忽略,就像评论一样?
Is static_assert compiled into the binary file
没有
As my understanding, static_assert won't be executed at runtime, right?
没错。
the compiler will build the static_assert into the binary file
没有
the static_assert will be totally ignored, just like a comment?
不,这不是评论 - 检查表达式,如果表达式为假,则会显示一条消息。当表达式不是常量(无法在编译时计算)时,也会显示一条消息。
与旧的 assert()
不同,后者是运行时测试,static_assert
由编译器测试,如果不满足会导致编译时错误。或者如果不能静态测试...
那么在运行时,已经知道是真的,不需要再测试了。