gcc对C语言的扩展:局部标签声明(Locally Decl…
2008-02-23 05:41:25来源:互联网 阅读 ()
一个局部标签的申明如下:
__label__ label;
或:
__label__ label1, label2, ...;
局部标签的申明必须在语句内嵌表达式的开始出,紧跟({后面,在任何通常申明的左边。局部标签申明只是定义了标签的名字,但是并没有定义标签本身。 您必须用通常的标签使用方法来在语句内嵌表达式内部使用局部标签。
由于语句内嵌表达式经常用于宏,所以局部标签特性很有用。假如在宏里包含了循环,一个goto能很有效的跳出循环。然而通常的标签的作用域式整个函数,假如宏在一个函数中被多次使用,标签就会在这个函数中被重复定义。而局部标签能避免这个问题。例如:
#define SEARCH(array, target) \
({ \
__label__ found; \
typeof (target) _SEARCH_target = (target); \
typeof (*(array)) *_SEARCH_array = (array); \
int i, j; \
int value; \
for (i = 0; i < max; i ) \
for (j = 0; j < max; j ) \
if (_SEARCH_array[j] == _SEARCH_target) \
{ value = i; goto found; } \
value = -1; \
found: \
value; \
})
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash