﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C底世界</title><link>http://www.cppblog.com/C-Student/</link><description>C  学习库</description><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 23:39:21 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 23:39:21 GMT</pubDate><ttl>60</ttl><item><title>ASC码 介绍 及 查询</title><link>http://www.cppblog.com/C-Student/archive/2008/07/10/55810.html</link><dc:creator>C_Student</dc:creator><author>C_Student</author><pubDate>Thu, 10 Jul 2008 08:28:00 GMT</pubDate><guid>http://www.cppblog.com/C-Student/archive/2008/07/10/55810.html</guid><wfw:comment>http://www.cppblog.com/C-Student/comments/55810.html</wfw:comment><comments>http://www.cppblog.com/C-Student/archive/2008/07/10/55810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/C-Student/comments/commentRss/55810.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/C-Student/services/trackbacks/55810.html</trackback:ping><description><![CDATA[目前计算机中用得最广泛的字符集及其编码，是由美国国家标准局(ANSI)制定的ASCII码（American Standard Code for Information Interchange，美国标准信息交换码），它已被国际标准化组织（ISO）定为国际标准，称为ISO 646标准。适用于所有拉丁文字字母，ASCII码有7位码和8位码两种形式。因为1位二进制数可以表示（21=）2种状态：0、1；而2位二进制数可以表示（22）=4种状态：00、01、10、11；依次类推，7位二进制数可以表示（27=）128种状态，每种状态都唯一地编为一个7位的二进制码，对应一个字符（或控制码），这些码可以排列成一个十进制序号0～127。所以，7 位ASCII码是用七位二进制数进行编码的，可以表示128个字符。
<p>&#160;</p>
<p>　　第0～32号及第127号(共34个)是控制字符或通讯专用字符，如控制符：LF（换行）、CR（回车）、FF（换页）、DEL（删除）、BEL（振铃）等；通讯专用字符：SOH（文头）、EOT（文尾）、ACK（确认）等； </p>
<p>　　第33～126号(共94个)是字符，其中第48～57号为0～9十个阿拉伯数字；65～90号为26个大写英文字母，97～122号为26个小写英文字母，其余为一些标点符号、运算符号等。 </p>
<p>　　注意：在计算机的存储单元中，一个ASCII码值占一个字节(8个二进制位)，其最高位(b7)用作奇偶校验位。所谓奇偶校验，是指在代码传送过程中用来检验是否出现错误的一种方法，一般分奇校验和偶校验两种。奇校验规定：正确的代码一个字节中1的个数必须是奇数，若非奇数，则在最高位b7添1；偶校验规定：正确的代码一个字节中1的个数必须是偶数，若非偶数，则在最高位b7添1。 </p>
<p>　　为了便于查询，以下列出ASCII码表： </p>
<p>　　第128～255号为扩展字符（不常用）</p>
<table width="99%" border=1>
    <tbody>
        <tr>
            <td>Dec</td>
            <td>Hx</td>
            <td>Oct</td>
            <td>Char</td>
            <td style="HEIGHT: 23px"></td>
            <td>Dec</td>
            <td>Hx</td>
            <td>Oct</td>
            <td>Char</td>
            <td>Dec</td>
            <td>Hx</td>
            <td>Oct</td>
            <td>Char</td>
            <td>Dec</td>
            <td>Hx</td>
            <td>Oct</td>
            <td>Char </td>
        </tr>
        <tr>
            <td>0</td>
            <td>0</td>
            <td>000</td>
            <td>NUL</td>
            <td>(null)</td>
            <td>32</td>
            <td>20</td>
            <td>040</td>
            <td>SPACE</td>
            <td>64</td>
            <td>40</td>
            <td>100</td>
            <td>@</td>
            <td>96</td>
            <td>60</td>
            <td>140</td>
            <td>` </td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>001</td>
            <td>SOH</td>
            <td>(start of heading)</td>
            <td>33</td>
            <td>21</td>
            <td>041</td>
            <td>!</td>
            <td>65</td>
            <td>41</td>
            <td>101</td>
            <td>A</td>
            <td>97</td>
            <td>61</td>
            <td>141</td>
            <td>a </td>
        </tr>
        <tr>
            <td>2</td>
            <td>2</td>
            <td>002</td>
            <td>STX</td>
            <td>(start of text)</td>
            <td>34</td>
            <td>22</td>
            <td>042</td>
            <td>"</td>
            <td>66</td>
            <td>42</td>
            <td>102</td>
            <td>B</td>
            <td>98</td>
            <td>62</td>
            <td>142</td>
            <td>b </td>
        </tr>
        <tr>
            <td>3</td>
            <td>3</td>
            <td>003</td>
            <td>ETX</td>
            <td>(end of text)</td>
            <td>35</td>
            <td>23</td>
            <td>043</td>
            <td>#</td>
            <td>67</td>
            <td>43</td>
            <td>103</td>
            <td>C</td>
            <td>99</td>
            <td>63</td>
            <td>143</td>
            <td>c </td>
        </tr>
        <tr>
            <td>4</td>
            <td>4</td>
            <td>004</td>
            <td>EOT</td>
            <td>(end of transmission)</td>
            <td>36</td>
            <td>24</td>
            <td>044</td>
            <td>$</td>
            <td>68</td>
            <td>44</td>
            <td>104</td>
            <td>D</td>
            <td>100</td>
            <td>64</td>
            <td>144</td>
            <td>d </td>
        </tr>
        <tr>
            <td>5</td>
            <td>5</td>
            <td>005</td>
            <td>ENQ</td>
            <td>(enquiry)</td>
            <td>37</td>
            <td>25</td>
            <td>045</td>
            <td>%</td>
            <td>69</td>
            <td>45</td>
            <td>105</td>
            <td>E</td>
            <td>101</td>
            <td>65</td>
            <td>145</td>
            <td>e </td>
        </tr>
        <tr>
            <td>6</td>
            <td>6</td>
            <td>006</td>
            <td>ACK</td>
            <td>(acknowledge)</td>
            <td>38</td>
            <td>26</td>
            <td>046</td>
            <td>&amp;</td>
            <td>70</td>
            <td>46</td>
            <td>106</td>
            <td>F</td>
            <td>102</td>
            <td>66</td>
            <td>146</td>
            <td>f </td>
        </tr>
        <tr>
            <td>7</td>
            <td>7</td>
            <td>007</td>
            <td>BEL</td>
            <td>(bell)</td>
            <td>39</td>
            <td>27</td>
            <td>047</td>
            <td>'</td>
            <td>71</td>
            <td>47</td>
            <td>107</td>
            <td>G</td>
            <td>103</td>
            <td>67</td>
            <td>147</td>
            <td>g </td>
        </tr>
        <tr>
            <td>8</td>
            <td>8</td>
            <td>010</td>
            <td>BS</td>
            <td>(backspace)</td>
            <td>40</td>
            <td>28</td>
            <td>050</td>
            <td>(</td>
            <td>72</td>
            <td>48</td>
            <td>110</td>
            <td>H</td>
            <td>104</td>
            <td>68</td>
            <td>150</td>
            <td>h </td>
        </tr>
        <tr>
            <td>9</td>
            <td>9</td>
            <td>011</td>
            <td>TAB</td>
            <td>(horizontal tab)</td>
            <td>41</td>
            <td>29</td>
            <td>051</td>
            <td>)</td>
            <td>73</td>
            <td>49</td>
            <td>111</td>
            <td>I</td>
            <td>105</td>
            <td>69</td>
            <td>151</td>
            <td>i </td>
        </tr>
        <tr>
            <td>10</td>
            <td>A</td>
            <td>012</td>
            <td>LF</td>
            <td style="WIDTH: 164px; HEIGHT: 23px">(NL line feed, new_line)</td>
            <td>42</td>
            <td>2A</td>
            <td>052</td>
            <td>*</td>
            <td>74</td>
            <td>4A</td>
            <td>112</td>
            <td>J</td>
            <td>106</td>
            <td>6A</td>
            <td>152</td>
            <td>j </td>
        </tr>
        <tr>
            <td>11</td>
            <td>B</td>
            <td>013</td>
            <td>VT</td>
            <td>(vertical tab)</td>
            <td>43</td>
            <td>2B</td>
            <td>053</td>
            <td>+</td>
            <td>75</td>
            <td>4B</td>
            <td>113</td>
            <td>K</td>
            <td>107</td>
            <td>6B</td>
            <td>153</td>
            <td>k </td>
        </tr>
        <tr>
            <td>12</td>
            <td>C</td>
            <td>014</td>
            <td>FF</td>
            <td>(NP form feed, new page)</td>
            <td>44</td>
            <td>2C</td>
            <td>054</td>
            <td>,</td>
            <td>76</td>
            <td>4C</td>
            <td>114</td>
            <td>L</td>
            <td>108</td>
            <td>6C</td>
            <td>154</td>
            <td>l </td>
        </tr>
        <tr>
            <td>13</td>
            <td>D</td>
            <td>015</td>
            <td>CR</td>
            <td>(carriage return)</td>
            <td>45</td>
            <td>2D</td>
            <td>055</td>
            <td>-</td>
            <td>77</td>
            <td>4D</td>
            <td>115</td>
            <td>M</td>
            <td>109</td>
            <td>6D</td>
            <td>155</td>
            <td>m </td>
        </tr>
        <tr>
            <td>14</td>
            <td>E</td>
            <td>016</td>
            <td>SO</td>
            <td>(shift out)</td>
            <td>46</td>
            <td>2E</td>
            <td>056</td>
            <td>.</td>
            <td>78</td>
            <td>4E</td>
            <td>116</td>
            <td>N</td>
            <td>110</td>
            <td>6E</td>
            <td>156</td>
            <td>n </td>
        </tr>
        <tr>
            <td>15</td>
            <td>F</td>
            <td>017</td>
            <td>SI</td>
            <td>(shift in)</td>
            <td>47</td>
            <td>2F</td>
            <td>057</td>
            <td>/</td>
            <td>79</td>
            <td>4F</td>
            <td>117</td>
            <td>O</td>
            <td>111</td>
            <td>6F</td>
            <td>157</td>
            <td>o </td>
        </tr>
        <tr>
            <td>16</td>
            <td>10</td>
            <td>020</td>
            <td>DLE</td>
            <td>(data link escape)</td>
            <td>48</td>
            <td>30</td>
            <td>060</td>
            <td>0</td>
            <td>80</td>
            <td>50</td>
            <td>120</td>
            <td>P</td>
            <td>112</td>
            <td>70</td>
            <td>160</td>
            <td>p </td>
        </tr>
        <tr>
            <td>17</td>
            <td>11</td>
            <td>021</td>
            <td>DC1</td>
            <td>(device control 1)</td>
            <td>49</td>
            <td>31</td>
            <td>061</td>
            <td>1</td>
            <td>81</td>
            <td>51</td>
            <td>121</td>
            <td>Q</td>
            <td>113</td>
            <td>71</td>
            <td>161</td>
            <td>q </td>
        </tr>
        <tr>
            <td>18</td>
            <td>12</td>
            <td>022</td>
            <td>DC2</td>
            <td>(device control 2)</td>
            <td>50</td>
            <td>32</td>
            <td>062</td>
            <td>2</td>
            <td>82</td>
            <td>52</td>
            <td>122</td>
            <td>R</td>
            <td>114</td>
            <td>72</td>
            <td>162</td>
            <td>r </td>
        </tr>
        <tr>
            <td>19</td>
            <td>13</td>
            <td>023</td>
            <td>DC3</td>
            <td>(device control 3)</td>
            <td>51</td>
            <td>33</td>
            <td>063</td>
            <td>3</td>
            <td>83</td>
            <td>53</td>
            <td>123</td>
            <td>S</td>
            <td>115</td>
            <td>73</td>
            <td>163</td>
            <td>s </td>
        </tr>
        <tr>
            <td>20</td>
            <td>14</td>
            <td>024</td>
            <td>DC4</td>
            <td>(device control 4)</td>
            <td>52</td>
            <td>34</td>
            <td>064</td>
            <td>4</td>
            <td>84</td>
            <td>54</td>
            <td>124</td>
            <td>T</td>
            <td>116</td>
            <td>74</td>
            <td>164</td>
            <td>t </td>
        </tr>
        <tr>
            <td>21</td>
            <td>15</td>
            <td>025</td>
            <td>NAK</td>
            <td>(negative acknowledge)</td>
            <td>53</td>
            <td>35</td>
            <td>065</td>
            <td>5</td>
            <td>85</td>
            <td>55</td>
            <td>125</td>
            <td>U</td>
            <td>117</td>
            <td>75</td>
            <td>165</td>
            <td>u </td>
        </tr>
        <tr>
            <td>22</td>
            <td>16</td>
            <td>026</td>
            <td>SYN</td>
            <td>(synchronous idle)</td>
            <td>54</td>
            <td>36</td>
            <td>066</td>
            <td>6</td>
            <td>86</td>
            <td>56</td>
            <td>126</td>
            <td>V</td>
            <td>118</td>
            <td>76</td>
            <td>166</td>
            <td>v </td>
        </tr>
        <tr>
            <td>23</td>
            <td>17</td>
            <td>027</td>
            <td>ETB</td>
            <td>(end of trans. block)</td>
            <td>55</td>
            <td>37</td>
            <td>067</td>
            <td>7</td>
            <td>87</td>
            <td>57</td>
            <td>127</td>
            <td>W</td>
            <td>119</td>
            <td>77</td>
            <td>167</td>
            <td>w </td>
        </tr>
        <tr>
            <td>24</td>
            <td>18</td>
            <td>030</td>
            <td>CAN</td>
            <td>(cancel)</td>
            <td>56</td>
            <td>38</td>
            <td>070</td>
            <td>8</td>
            <td>88</td>
            <td>58</td>
            <td>130</td>
            <td>X</td>
            <td>120</td>
            <td>78</td>
            <td>170</td>
            <td>x </td>
        </tr>
        <tr>
            <td>25</td>
            <td>19</td>
            <td>031</td>
            <td>EM</td>
            <td>(end of medium)</td>
            <td>57</td>
            <td>39</td>
            <td>071</td>
            <td>9</td>
            <td>89</td>
            <td>59</td>
            <td>131</td>
            <td>Y</td>
            <td>121</td>
            <td>79</td>
            <td>171</td>
            <td>y </td>
        </tr>
        <tr>
            <td>26</td>
            <td>1A</td>
            <td>032</td>
            <td>SUB</td>
            <td>(substitute)</td>
            <td>58</td>
            <td>3A</td>
            <td>072</td>
            <td>:</td>
            <td>90</td>
            <td>5A</td>
            <td>132</td>
            <td>Z</td>
            <td>122</td>
            <td>7A</td>
            <td>172</td>
            <td>z </td>
        </tr>
        <tr>
            <td>27</td>
            <td>1B</td>
            <td>033</td>
            <td>ESC</td>
            <td>(escape)</td>
            <td>59</td>
            <td>3B</td>
            <td>073</td>
            <td>;</td>
            <td>91</td>
            <td>5B</td>
            <td>133</td>
            <td>[</td>
            <td>123</td>
            <td>7B</td>
            <td>173</td>
            <td>{ </td>
        </tr>
        <tr>
            <td>28</td>
            <td>1C</td>
            <td>034</td>
            <td>FS</td>
            <td>(file separator)</td>
            <td>60</td>
            <td>3C</td>
            <td>074</td>
            <td>&lt;</td>
            <td>92</td>
            <td>5C</td>
            <td>134</td>
            <td>\</td>
            <td>124</td>
            <td>7C</td>
            <td>174</td>
            <td></td>
        </tr>
        <tr>
            <td>29</td>
            <td>1D</td>
            <td>035</td>
            <td>GS</td>
            <td>(group separator)</td>
            <td>61</td>
            <td>3D</td>
            <td>075</td>
            <td>=</td>
            <td>93</td>
            <td>5D</td>
            <td>135</td>
            <td>]</td>
            <td>125</td>
            <td>7D</td>
            <td>175</td>
            <td>} </td>
        </tr>
        <tr>
            <td>30</td>
            <td>1E</td>
            <td>036</td>
            <td>RS</td>
            <td>(record separator)</td>
            <td>62</td>
            <td>3E</td>
            <td>076</td>
            <td>&gt;</td>
            <td>94</td>
            <td>5E</td>
            <td>136</td>
            <td>^</td>
            <td>126</td>
            <td>7E</td>
            <td>176</td>
            <td>~ </td>
        </tr>
        <tr>
            <td>31</td>
            <td>1F</td>
            <td>037</td>
            <td>US</td>
            <td>(unit separator)</td>
            <td>63</td>
            <td>3F</td>
            <td>077</td>
            <td>?</td>
            <td>95</td>
            <td>5F</td>
            <td>137</td>
            <td>_</td>
            <td>127</td>
            <td>7F</td>
            <td>177</td>
            <td>DEL </td>
        </tr>
    </tbody>
</table>
<h2>扩充字符集(Extended Character Set)</h2>
<img height=322 alt=image:查ASC码-ascii.gif src="http://cn.18dao.net/images/9/9b/%E6%9F%A5ASC%E7%A0%81-ascii.gif" width="99%" longDesc=http://cn.18dao.net/Image:%E6%9F%A5ASC%E7%A0%81-ascii.gif>
<h2>ISO Latin-1字符集(编码160-255)</h2>
<table width="99%">
    <tbody>
        <tr>
            <td>
            <table width="99%" border=1>
                <tbody>
                    <tr>
                        <td>编码</td>
                        <td>字符</td>
                        <td>编码</td>
                        <td>字符</td>
                        <td>编码</td>
                        <td>字符</td>
                        <td>编码</td>
                        <td>字符 </td>
                    </tr>
                    <tr>
                        <td>160</td>
                        <td></td>
                        <td>172</td>
                        <td>&#172;</td>
                        <td>184</td>
                        <td>&#184;</td>
                        <td>196</td>
                        <td>&#196; </td>
                    </tr>
                    <tr>
                        <td>161</td>
                        <td>&#161;</td>
                        <td>173</td>
                        <td></td>
                        <td>185</td>
                        <td>&#185;</td>
                        <td>197</td>
                        <td>&#197; </td>
                    </tr>
                    <tr>
                        <td>162</td>
                        <td>&#162;</td>
                        <td>174</td>
                        <td>&#174;</td>
                        <td>186</td>
                        <td>&#186;</td>
                        <td>198</td>
                        <td>&#198; </td>
                    </tr>
                    <tr>
                        <td>163</td>
                        <td>&#163;</td>
                        <td>175</td>
                        <td>&#247;</td>
                        <td>187</td>
                        <td>&#187;</td>
                        <td>199</td>
                        <td>&#199; </td>
                    </tr>
                    <tr>
                        <td>164</td>
                        <td>&#164;</td>
                        <td>176</td>
                        <td></td>
                        <td>188</td>
                        <td>&#188;</td>
                        <td>200</td>
                        <td>&#200; </td>
                    </tr>
                    <tr>
                        <td>165</td>
                        <td>&#165;</td>
                        <td>177</td>
                        <td>&#177;</td>
                        <td>189</td>
                        <td>&#189;</td>
                        <td>201</td>
                        <td>&#201; </td>
                    </tr>
                    <tr>
                        <td>166</td>
                        <td>&#166;</td>
                        <td>178</td>
                        <td>&#178;</td>
                        <td>190</td>
                        <td>&#190;</td>
                        <td>202</td>
                        <td>&#202; </td>
                    </tr>
                    <tr>
                        <td>167</td>
                        <td>&#8221;</td>
                        <td>179</td>
                        <td>&#179;</td>
                        <td>191</td>
                        <td>&#191;</td>
                        <td>203</td>
                        <td>&#203; </td>
                    </tr>
                    <tr>
                        <td>168</td>
                        <td>&#168;</td>
                        <td>180</td>
                        <td>&#180;</td>
                        <td>192</td>
                        <td>&#192;</td>
                        <td>204</td>
                        <td>&#204; </td>
                    </tr>
                    <tr>
                        <td>169</td>
                        <td>&#169;</td>
                        <td>181</td>
                        <td>&#181;</td>
                        <td>193</td>
                        <td>&#193;</td>
                        <td>205</td>
                        <td>&#205; </td>
                    </tr>
                    <tr>
                        <td>170</td>
                        <td>&#170;</td>
                        <td>182</td>
                        <td>&#182;</td>
                        <td>194</td>
                        <td>&#194;</td>
                        <td>206</td>
                        <td>&#206; </td>
                    </tr>
                    <tr>
                        <td>171</td>
                        <td>&#171;</td>
                        <td>183</td>
                        <td>&#183;</td>
                        <td>195</td>
                        <td>&#195;</td>
                        <td>207</td>
                        <td>&#207; </td>
                    </tr>
                </tbody>
            </table>
            </td>
            <td></td>
            <td></td>
            <td>
            <table width="99%" border=1>
                <tbody>
                    <tr>
                        <td>编码</td>
                        <td>字符</td>
                        <td>编码</td>
                        <td>字符</td>
                        <td>编码</td>
                        <td>字符</td>
                        <td>编码</td>
                        <td>字符 </td>
                    </tr>
                    <tr>
                        <td>208</td>
                        <td>&#208;</td>
                        <td>220</td>
                        <td>&#220;</td>
                        <td>232</td>
                        <td>&#232;</td>
                        <td>244</td>
                        <td>&#244; </td>
                    </tr>
                    <tr>
                        <td>209</td>
                        <td>&#209;</td>
                        <td>221</td>
                        <td>&#221;</td>
                        <td>233</td>
                        <td>&#233;</td>
                        <td>245</td>
                        <td>&#245; </td>
                    </tr>
                    <tr>
                        <td>210</td>
                        <td>&#210;</td>
                        <td>222</td>
                        <td>&#222;</td>
                        <td>234</td>
                        <td>&#234;</td>
                        <td>246</td>
                        <td>&#246; </td>
                    </tr>
                    <tr>
                        <td>211</td>
                        <td>&#211;</td>
                        <td>223</td>
                        <td>&#223;</td>
                        <td>235</td>
                        <td>&#235;</td>
                        <td>247</td>
                        <td>&#247; </td>
                    </tr>
                    <tr>
                        <td>212</td>
                        <td>&#212;</td>
                        <td>224</td>
                        <td>&#224;</td>
                        <td>236</td>
                        <td>&#236;</td>
                        <td>248</td>
                        <td>&#248; </td>
                    </tr>
                    <tr>
                        <td>213</td>
                        <td>&#213;</td>
                        <td>225</td>
                        <td>&#225;</td>
                        <td>237</td>
                        <td>&#237;</td>
                        <td>249</td>
                        <td>&#249; </td>
                    </tr>
                    <tr>
                        <td>214</td>
                        <td>&#214;</td>
                        <td>226</td>
                        <td>&#226;</td>
                        <td>238</td>
                        <td>&#238;</td>
                        <td>250</td>
                        <td>&#250; </td>
                    </tr>
                    <tr>
                        <td>215</td>
                        <td>⊙</td>
                        <td>227</td>
                        <td>&#227;</td>
                        <td>239</td>
                        <td>&#239;</td>
                        <td>251</td>
                        <td>&#251; </td>
                    </tr>
                    <tr>
                        <td>216</td>
                        <td>&#216;</td>
                        <td>228</td>
                        <td>&#228;</td>
                        <td>240</td>
                        <td>&#240;</td>
                        <td>252</td>
                        <td>&#252; </td>
                    </tr>
                    <tr>
                        <td>217</td>
                        <td>&#217;</td>
                        <td>229</td>
                        <td>&#229;</td>
                        <td>241</td>
                        <td>&#241;</td>
                        <td>253</td>
                        <td>&#253; </td>
                    </tr>
                    <tr>
                        <td>218</td>
                        <td>&#218;</td>
                        <td>230</td>
                        <td>&#230;</td>
                        <td>242</td>
                        <td>&#242;</td>
                        <td>254</td>
                        <td>&#254; </td>
                    </tr>
                    <tr>
                        <td>219</td>
                        <td>&#219;</td>
                        <td>231</td>
                        <td>&#231;</td>
                        <td>243</td>
                        <td>&#243;</td>
                        <td>255</td>
                        <td>&#255; </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cppblog.com/C-Student/aggbug/55810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/C-Student/" target="_blank">C_Student</a> 2008-07-10 16:28 <a href="http://www.cppblog.com/C-Student/archive/2008/07/10/55810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C语言extern (extern关键字基本解释)</title><link>http://www.cppblog.com/C-Student/archive/2008/07/10/55787.html</link><dc:creator>C_Student</dc:creator><author>C_Student</author><pubDate>Thu, 10 Jul 2008 03:34:00 GMT</pubDate><guid>http://www.cppblog.com/C-Student/archive/2008/07/10/55787.html</guid><wfw:comment>http://www.cppblog.com/C-Student/comments/55787.html</wfw:comment><comments>http://www.cppblog.com/C-Student/archive/2008/07/10/55787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/C-Student/comments/commentRss/55787.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/C-Student/services/trackbacks/55787.html</trackback:ping><description><![CDATA[<p><span style="FONT-SIZE: 12px"><strong>1 基本解释<br><br></strong>　　extern可以置于变量或者<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>前，以标示变量或者<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的定义在别的文件中，提示编译器遇到此变量和<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>时在其他模块中寻找其定义。<br><br>　　另外，extern也可用来进行链接指定。</span></p>
<p><span style="FONT-SIZE: 12px"><strong>2 问题：extern 变量</strong><br><br>　　在一个源文件里定义了一个数组：char a[6];<br>　　在另外一个文件里用下列语句进行了声明：extern char *a；<br>　　请问，这样可以吗？ </span></p>
<span style="FONT-SIZE: 12px">
<p><br>　　答案与分析：<br>　　1)、不可以，程序运行时会告诉你非法访问。原因在于，指向类型T的<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%D6%B8%D5%EB&amp;Submit=+%CB%D1%CB%F7+" target=_blank><font color=#000000>指针</font></a>并不等价于类型T的数组。extern char *a声明的是一个<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%D6%B8%D5%EB&amp;Submit=+%CB%D1%CB%F7+" target=_blank><font color=#000000>指针</font></a>变量而不是字符数组，因此与实际的定义不同，从而造成运行时非法访问。应该将声明改为extern char a[ ]。<br><br>　　2)、例子分析如下，如果a[] = "abcd",则外部变量a=0x61626364 (abcd的ASCII码值)，*a显然没有意义<br><br>　　显然a指向的空间（0x61626364）没有意义，易出现非法内存访问。<br><br>　　3)、这提示我们，在使用extern时候要严格对应声明时的格式，在实际编程中，这样的错误屡见不鲜。<br><br>　　4)、extern用在变量声明中常常有这样一个作用，你在*.c文件中声明了一个全局的变量，这个全局的变量如果要被引用，就放在*.h中并用extern来声明。<br><br></p>
<p><span style="FONT-SIZE: 12px"><strong>4 问题：extern <a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>2</strong><br><br>　　当<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>提供方单方面修改<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>原型时，如果使用方不知情继续沿用原来的extern申明，这样编译时编译器不会报错。但是在运行过程中，因为少了或者多了输入参数，往往会照成系统错误，这种情况应该如何解决？<br><br>　　答案与分析：<br><br>　　目前业界针对这种情况的处理没有一个很完美的方案，通常的做法是提供方在自己的xxx_pub.h中提供对外部<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BD%D3%BF%DA" target=_blank><font color=#000000>接口</font></a>的声明，然后调用方include该头文件，从而省去extern这一步。以避免这种错误。<br><br>　　宝剑有双锋，对extern的应用，不同的场合应该选择不同的做法。</span></p>
<p><span style="FONT-SIZE: 12px"><strong>5 问题：extern &#8220;C&#8221;</strong><br><br>　　在<a href="http://www.bc-cn.net/Article/kfyy/cjj/Index.html" target=_blank><font color=#000000>C++</font></a>环境下使用C<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的时候，常常会出现编译器无法找到obj模块中的C<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>定义，从而导致链接失败的情况，应该如何解决这种情况呢？<br><br>　　答案与分析：<br><br>　　<a href="http://www.bc-cn.net/Article/kfyy/cjj/Index.html" target=_blank><font color=#000000>C++</font></a>语言在编译的时候为了解决<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的多态问题，会将<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>名和参数联合起来生成一个中间的<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>名称，而<a href="http://www.bc-cn.net/Article/kfyy/cyy/Index.html" target=_blank><font color=#000000>C语言</font></a>则不会，因此会造成链接时找不到对应<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的情况，此时C<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>就需要用extern &#8220;C&#8221;进行链接指定，这告诉编译器，请保持我的名称，不要给我生成用于链接的中间<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>名。<br><br>　　下面是一个标准的写法：<br><br>//在.h文件的头上<br>#ifdef __cplusplus<br>#if __cplusplus<br>extern "C"{<br>　#endif<br>　#endif /* __cplusplus */ <br>　&#8230;<br>　&#8230;<br>　//.h文件结束的地方<br>　#ifdef __cplusplus<br>　#if __cplusplus<br>}<br>#endif<br>#endif /* __cplusplus */</span>&nbsp;</p>
</span><span style="FONT-SIZE: 12px"><strong>3 问题：extern <a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>1</strong><br><br>　　常常见extern放在<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的前面成为<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>声明的一部分，那么，<a href="http://www.bc-cn.net/Article/kfyy/cyy/Index.html" target=_blank><font color=#000000>C语言</font></a>的关键字extern在<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的声明中起什么作用？<br><br>　　答案与分析：<br><br>　　如果<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>的声明中带有关键字extern，仅仅是暗示这个<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>可能在别的源文件里定义，没有其它作用。即下述两个<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>声明没有明显的区别：<br><br>extern int f(); 和int f();<br>　　当然，这样的用处还是有的，就是在程序中取代include &#8220;*.h&#8221;来声明<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>，在一些复杂的项目中，我比较习惯在所有的<a href="http://www.bc-cn.net/Article/Search.asp?Field=Title&amp;ClassID=&amp;keyword=%BA%AF%CA%FD" target=_blank><font color=#000000>函数</font></a>声明前添加extern修饰。</span>
<img src ="http://www.cppblog.com/C-Student/aggbug/55787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/C-Student/" target="_blank">C_Student</a> 2008-07-10 11:34 <a href="http://www.cppblog.com/C-Student/archive/2008/07/10/55787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>extern "C"说明 及 用法</title><link>http://www.cppblog.com/C-Student/archive/2008/07/10/55774.html</link><dc:creator>C_Student</dc:creator><author>C_Student</author><pubDate>Thu, 10 Jul 2008 01:07:00 GMT</pubDate><guid>http://www.cppblog.com/C-Student/archive/2008/07/10/55774.html</guid><wfw:comment>http://www.cppblog.com/C-Student/comments/55774.html</wfw:comment><comments>http://www.cppblog.com/C-Student/archive/2008/07/10/55774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/C-Student/comments/commentRss/55774.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/C-Student/services/trackbacks/55774.html</trackback:ping><description><![CDATA[<p>extern "C"{}的作用就是说明这在{}范围之内说明的函数是按c，或者需要按c标准来编译。可以从声明调用二个方面来描述它的作用： <br>1.声明 <br>&nbsp; 以下c++代码： <br>&nbsp; extern "C" { void test() } <br>&nbsp; void test() <br>&nbsp; { <br>&nbsp;&nbsp;&nbsp; // do test <br>&nbsp; } <br>表示希望编译器使用c标准来编译test函数。而在c语言中不支持extern "C"。 <br>2.c++代码调用c代码 <br>&nbsp; extern "C" { void test() //test()是c代码或者或者说明是按c标准编译的代码 } <br>&nbsp; int main() <br>&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp; test(); <br>&nbsp; } <br>&nbsp;无论test函数是c写的还是c++写的，只要它是按c标准编译的，就需要加上extern "C" 声明 <br>3.c调用c++代码 <br>&nbsp; c要调用c++代码，在c++代码中必须以extern "C" 来声明函数，如上文1所示。以下是c代码 <br>&nbsp; void test(); <br>&nbsp; int main() <br>&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp; test(); <br>&nbsp; } <br><br>例如：<br>#ifdef &nbsp; __cplusplus&nbsp;&nbsp;&nbsp;&nbsp; /* &nbsp; __cplusplus&nbsp;&nbsp;表示是C++程序 */&nbsp;<br>&nbsp; extern &nbsp; "C" &nbsp; { &nbsp; &nbsp; &nbsp; //这是什么意思 &nbsp; ？？？？？？？？？？？？？ &nbsp; <br>&nbsp; #endif &nbsp; /* &nbsp; __cplusplus &nbsp; */ <br><br>表示如果现在的编译环境是C++的话，让编译器生成C样式的函数名，也就是阻止编译器使用C++的方法进行函数名解析。<br><br>C++中因为函数可以重载: &nbsp; <br>&nbsp; int &nbsp; a(char) &nbsp; <br>&nbsp; int &nbsp; a(int) &nbsp; <br>&nbsp; int &nbsp; a(double)... &nbsp; <br>&nbsp; 所以,在编译后的代码里,三个a()是不同的函数名如a_char_xxx,a_in_xxx,a_double_xxx等等. <br><br>要去掉后面的一大串符号只要在a()前面加上exter &nbsp; "C"即可 <br><br>在DLL的对外接口函数中,必须用exter &nbsp; "C" &nbsp; 限制,否则,外部调用者根本不知道你的真正函数名.<br><br>1 &nbsp; VC6.0编译器可以按C++或C生成目标函数. &nbsp; 两者生成的目标符号表 &nbsp; <br>&nbsp; &nbsp; &nbsp; 并不一样. &nbsp; C方式是与原来标准C相兼容.&nbsp;&nbsp;&nbsp;<br>2 &nbsp; 在DLL中的接口函数一般应按C方式编译而成. &nbsp; extern &nbsp; "C" &nbsp; 就是强 &nbsp; <br>&nbsp; &nbsp; &nbsp; 制指定. &nbsp; 如果不按这种方式指定.GetProcAddress(...)取出来的&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就不对. &nbsp; 只能隐式连接.<br><br>&nbsp; extern &nbsp; "c" &nbsp; 的作用就是使得函数的定义名称和导出名称一致</p>
<img src ="http://www.cppblog.com/C-Student/aggbug/55774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/C-Student/" target="_blank">C_Student</a> 2008-07-10 09:07 <a href="http://www.cppblog.com/C-Student/archive/2008/07/10/55774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>