c语言的单行注释范围,c语言中的注释,multi-line comment

在C/C++语言中,

在对源文件做预处理的时候,有两条基本原则:

1、凡是以//开头的为单行注释

2、凡是以\结尾的代表此行尚未结束

于是预处理器在处理的时候会先按第二条规则,看每行的末尾的那个字符是不是”\”,是的

话,就下一行接到本行。

然后把所有以//开头的注释和/* */的块注释去掉。

但是存在一个问题,

对于big5中的汉字而言,其第一个字节的编码范围是0xA1 - 0xFE,第二个字节是0×40 -

0xFE。而’\'的ASCII码是0×5c.这就意味这,凡是以big5编码的文件,如果gcc没有正确的

认为它源文件的编码是big5,那么就可能出现因为单行注释末尾是汉字,而把下行的代码

吃掉的情况。这样是很危险的,但是gcc会给出一个警告:”warning: multi-line

comment In file”

这样的问题在gbk中同样存在。

将下面的代码

—————————————————————————–

//你篭

int main(int argc,char* argv[]){

return 0;

}

—————————————————————————–

以gbk的方式保存,并采用gcc 3.4编译。

无论是solaris 8还是freebsd 6.2,无论shell的locale的设置是zh_CN.GBK还是

zh_CN.UTF-8,所得到的错误都是相同的

$ gcc -c testgbk.cpp

testgbk.cpp:5: error: expected unqualified-id before “return”

testgbk.cpp:6: error: expected declaration before ‘}’ token

g++ 3.3下显示:

testgbk.cpp:3: error: parse error before `return’

原因很简单,我把“好”字的GBK编码的后半个字节改成了’\'的编码,从而得到了”篭”字。

gcc发现’\'后面接着的就是’\n’,故而把下一行”int main(int argc,char* argv[]){”也

当做注释一并删除掉了。

按gcc 3.4的man页,gcc会根据shell的locale设置来猜测源文件的编码格式,否则它会把

其当作utf-8来处理。但是据我在Freebsd和solaris系统中观察,gcc 3.4并没有根据环境

变量来猜测源文件的编码。

一个不错的解决方案是,强行给gcc添加-finput-charset=big5这样的参数,来解决此问

题。类似的还有-fexec-charset,-fwide-exec-charset用于指定执行环境的编码。但是

不幸的是,gcc内部的处理都是基于utf-8的,且其转换工作一般是靠系统的iconv转码库来

完成的。 所以系统库必须提供 GBK UTF-8 、BIG5 UTF-8 的编码.

例如,我在Freebsd 6.2下使用这样的参数编译一个测试文件:

$ gcc -c testbig5.cpp -finput-charset=big5 -fexec-charset=big5 -fwide-exec-charset=big5

所得到的输出是:

cc1plus: no iconv implementation, cannot convert from big5 to UTF-8

cc1plus: no iconv implementation, cannot convert from UTF-8 to big5

cc1plus: no iconv implementation, cannot convert from UTF-8 to big5

所以这种方案的缺点是

1、缺乏通用性,缺乏可移植性。

Freebsd的内核中的转码是靠查一个16位的表,所以无法处理utf-8中的汉字(因为汉字是3

字节),而直到最新的,要到08才能发布的Freebsd 7.x,此问题也依然没有被解决。

而Solaris最初的代码是基于BSD的。它所提供的iconv转码功能也非常差。

2、添加了很多额外的转码操作。

目前,utf-8(unicode)尚未完全容纳GBK、big5的全部字符。很多字符是转换不过去的。

另一个折衷的方案是:保证每行注释都以句号或者空格结尾。

缺点是,需要检查并改动很多文件。

且,特殊汉字依然有可能出现在源文件的常量字符串中。问题依旧。

例如

const char* s=”你篭”;

写成这样的怪样子就可以编译了:

const char* s=”你篭”";

较好的解决方案是源文件都以UTF-8格式编码。这样可以最大限度的减少转码次数。

最彻底的解决方案是引入gettext,不在源文件中存储汉字的常量字符串。改用单独的文件

存储。目前包括很多php论坛、blog都已采用这种方案。但是这样做本来是为了支持英、

法、汉多语言,解决翻译的问题。如果单为了简、繁的问题就这么做,代价太大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言自动拷贝u盘文件,写了一个偷偷拷贝老师U盘所有文件的程序……蛋疼……………...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼直接双击运行,程序会每一秒检查一下是否有移动盘插入,如果有,就在C盘下新建一个文件夹copy,并把移动盘内所有的文件拷贝到C:\copy下。拷贝完成后自动退出。我想也没哪个老师会蛋疼的去…

android listview自动加载更多,如何实现 Android ListView『上拉加载更多』?

ListView上拉加载更多的UI需求(1)向上滑动 ListView,当最后一个条目滚入屏幕时开始加载更多条目,在列表底部增加一个 footerView:一个 infinite progressBar,一个 textView 显示 “Loading...”;(2)根据数据加载的结果…

android webview 字体 系统字体大小,Android 系统字体大小动态改变,导致webview中显示不兼容的问题解决...

唠叨几句:在移动端再开发的过程中,很容易使用到webview,它也是用来混合开发的中间桥梁,因此解决webview使用过程中出现的问题是非常有必要的;问题现象与发现:现象:日前,在是使用webview加载html…

android安全性发展,Android未来发展 安全是重点

自2008年首部Android手机问世以来,谷歌智能手机方面的发展也开始高歌勇进,经过近8年的发展,Android已经成为市场上最大的移动互联网操作系统,市场占有率位居第一,虽然其竞争对手iOS步步紧逼,但是由于Androi…

android 字符串调用方法名,AndroidJNI.CallStringMethod 调用字符串方法

AndroidJNI.CallStringMethod 调用字符串方法static function CallStringMethod (obj : IntPtr, methodID : IntPtr, args : jvalue[]) : stringDescription描述Calls an instance (nonstatic) Java method defined by methodID, optionally passing an array of arguments (ar…

android 服务器返回302,Android WebView 内处理302重定向不跳转的解决

最近项目中Webview加载第三方的具有302的重定向,但是却发现却没有重新跳转。最后发现问题如下:public boolean shouldOverrideUrlLoading(WebView view, String url) {super.shouldOverrideUrlLoading(view, url);.................return true&#xff…

c语言输入一个数求因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#includemain(){int n,q,p,m,k1,sum0,s[99999]{2},t[99999];//n是输入的数;q和p分别代表两个数组的工作下标scanf("%d",&n); //k是用来取小于n数的数组工作下标for(int i3;i<n;i2) //去所有小于n的数&…

android手机rom简单制作教程,【图片】ROM助手:任意安卓机型的ROM制作教程【a298t吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼很多机友都在求精简系统&#xff0c;求ROOT等等....但不会怎么办&#xff1f;我来告诉大家一个完美无缺的办法&#xff01;授人以鱼不如授人以渔......蘑菇ROM助手&#xff1b;点击系统精简&#xff0c;导入刷机包。之后我们可以看…

android 邮件分享链接,Android应用从通过电子邮件发送的链接打开

我们的用户不时收到电子邮件.更改密码当他们点击链接时,我想将它们发送到我们的网站,但我们的Android应用程序被打开.链接例如是https://www.ourdomain.com/change-password/{random-string}.我们的应用程序中已经启用了深层链接,但配置方式如下&#xff1a;android:host"…

android excel布局,Android实现仿excel数据表格效果

在没给大家分享代码之前&#xff0c;先给大家展示下效果图&#xff1a;1.activity/*** 采购需求* Created by Administrator on 2016/10/13.*/public class PurchaseRequireActivity extends BaseActivity implements PurchaseRequireView {Bind(R.id.appTitle)TextView appTit…

android 页面整体滑动,ScrollView 实现页面整体滑动

页眉整体垂直方向滑动&#xff0c;xml文件较为简单&#xff0c;只需要在需要滑动的布局文件中包裹一层ScrollView就可以实现。示例&#xff1a;xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:…

首款搭载鸿蒙os的设备,华为发布会配件汇总,首款搭载 鸿蒙OS 的设备来了

2020 年 10 月 30 日&#xff0c;华为召开 Mate40 系列发布会&#xff0c;正式发布 Mate40 系列手机。除了手机&#xff0c;本次发布会还发布了华为 Watch GT2 Pro 手表、华为 Sound 音箱等配件。以下是详细情况&#xff1a;华为智选智能摄像头 Pro该设备是首款搭载 HarmonyOS …

html 纵向选项卡,竖直选项卡式面板的实现_html/css_WEB-ITnose

前面的话&#xff1a;我是html的初学者&#xff0c;懂得一些html的基本知识。最近开始学css&#xff0c;不会JavaScript。了解到adobe dw cs5的插入->spry有选项卡式面板的设计&#xff0c;对这个很感兴趣。但是发现默认的是tab水平排列在上面的。然而多数网站都是tab竖直排…

超鸿蒙混希夷的翻译,对《愚溪诗序》一处译文的思考

《愚溪诗序》文末&#xff0c;柳宗元写道&#xff1a;“以愚辞歌愚溪&#xff0c;则茫然而不违&#xff0c;昏然而同归&#xff0c;超鸿蒙&#xff0c;混希夷&#xff0c;寂寥而莫我知也。”人教版教参对“寂寥”的翻译是“寂寞清静”&#xff0c;对“莫我知”的翻译是“没有谁…

html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享

本文实例讲述了javascript带点自动图片轮播幻灯片特效。分享给大家供大家参考。具体如下&#xff1a;这是一款基于javascript实现带点自动图片轮播幻灯片特效代码&#xff0c;实现过程很简单。运行效果图&#xff1a;-------------------查看效果下载源码-------------------小…

省份城市区县三级联动html代码,基于Jquery实现省份、城市、区县三级联动

-//W3C//DTD HTML 4.01 Transitional//EN”“;>$(document).ready(function(){//省份城市数组var fujian_city new Array(‘福州’,’漳州’,’厦门’,’龙岩’,’泉州’,’南平’,’莆田’,’宁德’,’三明’);var guangdong_city new Array(‘广州’,’深圳’,’东莞’,…

html 页面元素id不唯一,规定html元素的唯一的id属性

实例通过 JavaScript 利用 id 属性来改变一段文本&#xff1a;function change_header(){document.getElementById("myHeader").innerHTML"Nice day!";}Hello World!Change text亲自试一试定义和用法id 属性规定 HTML 元素的唯一的 id。id 在 HTML 文档中必…

计算机网络硬件脆弱性,计算机网络的脆弱性有哪几点

计算机网络系统在设计、实施、应用和控制过程中存在的一切可能被攻击者利用从而造成安全危害的缺陷都是网络的脆弱性。佰佰安全网的专家顾问给出了这个问题的答案。计算机网络脆弱性(vulnerability)涉及一切信息系统或信息网络中可被非预期利用的方面。从整体上看&#xff0c;网…

Html百分比设宽偏差大,前端开发之移动端适配详细讲解

适配问题怎么适配iphone61px问题为什么页面与设计稿会出现偏差&#xff1f;dpr设备像素/ css像素&#xff0c;只有dpr等于1的时候&#xff0c;实际效果和设计稿的尺寸比例才是1:1。因为iPhone6的DPR(设备像素比)为2&#xff0c;设备像素为750&#xff0c;所以iPhone6的理想视口…

关于计算机网络的描述错误的是,【单选题】以下关于计算机网络定义的描述中,错误的是...

问题&#xff1a;【单选题】以下关于计算机网络定义的描述中&#xff0c;错误的是更多相关问题我省为了解决药品价格过高的问题&#xff0c;决定大幅度降低药品价格&#xff0c;其中将原价为a元的某种常用药降价40%&#xff0c;则降价后的今年五月份&#xff0c;由于H7N9禽流感…