Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

2.8 断言

以下形式的一行内容:

#assert predicate (token-sequence)

token-sequence 和断言名称空间(与用于宏定义的空间不同)中的谓词相结合。谓词必须为标识符标记。

#assert predicate

断言 predicate 存在,但是未与任何标记序列相结合。

未使用 -pedantic 时,编译器在缺省情况下会提供以下预定义谓词:

#assert system (unix)
#assert machine (sparc)
#assert machine (i386)(x86)
#assert cpu (sparc)
#assert cpu (i386)(x86)

未使用 -pedantic 时,lint 在缺省情况下会提供以下预定义谓词:

#assert lint (on)

任何断言均可使用 #unassert 进行删除,该命令的语法与 assert 的语法相同。使用不带参数的 #unassert 会删除谓词上的所有断言;指定一个断言仅会删除该断言。

可以使用以下语法在 #if 语句中测试断言:

#if #predicate(non-empty token-list)

例如,可以使用求值结果为 true 的以下行测试预定义谓词 system

#if #system(unix)