📄 structinproto.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"><!-- This collection of hypertext pages is Copyright 1995-2005 by Steve Summit. --><!-- Content from the book "C Programming FAQs: Frequently Asked Questions" --><!-- (Addison-Wesley, 1995, ISBN 0-201-84519-9) is made available here by --><!-- permission of the author and the publisher as a service to the community. --><!-- It is intended to complement the use of the published text --><!-- and is protected by international copyright laws. --><!-- The on-line content may be accessed freely for personal use --><!-- but may not be published or retransmitted without explicit permission. --><!-- --><!-- this page built Sat Dec 24 21:47:46 2005 by faqproc version 2.7 --><!-- from source file ansi.sgml dated Wed Aug 11 00:43:45 2004 --><!-- corresponding to FAQ list version 4.0 --><html><!-- Mirrored from c-faq.com/ansi/structinproto.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:58:55 GMT --><head><meta name=GENERATOR content="faqproc"><title>Question 11.5</title><link href="mixoldandnew.html" rev=precedes><link href="varargproto.html" rel=precedes><link href="index.html" rev=subdocument></head><body bgcolor="#ffffff"><a href="mixoldandnew.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="varargproto.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../index-2.html"><img src="../images/buttontop.gif" alt="top/contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><hr><p><!-- qbegin --><h1>comp.lang.c FAQ list<font color=blue>·</font><!-- qtag -->Question 11.5</h1><p><font face=Helvetica size=8 color=blue><b>Q:</b></font>Why does the declaration<pre>extern int f(struct x *p);</pre>give mean obscurewarning messageabout``struct x declared inside parameter list''?</p><p><hr><p><font face=Helvetica size=8 color=blue><b>A:</b></font>In a quirk of C's normal block scoping rules,astructure declared(or even mentioned)for the first timewithin a prototypecannot be compatible with other structuresdeclared in the same source file.(The problem is that the structure and the tag goout of scope at the end of the prototype;see question <a href="../decl/namespace.html">1.29</a>.)</p><p>To resolve the problem,you should probably rearrange things so thatthe actual declaration of the structureprecedes the function prototype(s) using it.(Usually,boththe prototypeandthe structure declarationwill end up in the same header file,so that the one can reference the other.)If you must mention a hitherto-unseen structurein a prototype,precede the prototype with thevacuous-looking declaration<pre> struct x;</pre>whichplaces an(incomplete)declaration of <TT>struct x</TT> at file scope,so that all following declarations involving <TT>struct x</TT>can at least be sure they're referring to the same <TT>struct x</TT>.</p><p>References:ISO Sec. 6.1.2.1, Sec. 6.1.2.6, Sec. 6.5.2.3<br></p><!-- aend --><p><hr><a href="mixoldandnew.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="varargproto.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../questions.html"><img src="../images/buttontop.gif" alt="contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><br><!-- lastfooter --><a href="../about.html">about this FAQ list</a> <a href="../eskimo.html">about eskimo</a> <a href="../search.html">search</a> <a href="../feedback.html">feedback</a> <a href="copyright.html">copyright</a><p>Hosted by<a href="http://www.eskimo.com/"><img src="../../www.eskimo.com/img/link/eskitiny.gif" alt="Eskimo North"></a></body><!-- Mirrored from c-faq.com/ansi/structinproto.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:58:55 GMT --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -