解决问题总结 第1篇

先自己扔块砖头出来。

归纳如下:

故障现象 : 无法连接 mysql

=============================================================================

错误信息1 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES)

错误信息2 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)

下面,首先分析说明这两种错误信息分别在什么情况下会出现:

描述:使用mysql连接命令或连接工具,对远程数据库进行连接时,可能会出现以上两种错误信息,下面以命令的连接方式进行说明。

当使用mysql里连接命令时,若xxx参数且指明密码,或xxx参数不指明密码,但在下一步输入密码时有字符串输入,则返回的是

“错误信息1”,若不xxx参数,或xxx参数但在下一步输入密码时,不输入任何字符,则返回的是“错误信息2”,如下所示:

C:\Documents and Settings\_>mysql -uroot -h -proot   //xxx参数,并指明密码

ERROR 1045 (28000): Access denied for user'root'@''(using password: YES)

C:\Documents and Settings\_>mysql -uroot -h -p   //xxx参数,在下一步进行密码输入

Enter password:    //有字符串输入

ERROR 1045 (28000): Access denied for user'root'@''(using password: YES)

C:\Documents and Settings\_>mysql -uroot -h    //不xxx参数

ERROR 1045 (28000): Access denied for user'root'@''(using password: NO)

C:\Documents and Settings\_>mysql -uroot -h -p  //xxx参数,在下一步进行密码输入

Enter password:   //无字符串输入

ERROR 1045 (28000): Access denied for user'root'@''(using password: NO)

上面的对比可总结出一点,使用mysql命令进行登录时,若有密码输入行为并输入了字符,则验证出错后,则返回的错误提示中,对于 (using password: ?)中?的关键字,则返回的是YES,若没有密码输入行为,或无密码字符输入,则返回的是NO。

除上面的实验对比,还进行了如下的登录对比操作,并记录了他们所返回错误提示类型,对上面的总结进行验证:

1.使用存在的用户,不输入密码

ERROR 1045 (28000): Access denied for user'root'@''(using password: NO)

2.使用不存在的用户,不输入密码

ERROR 1045 (28000): Access denied for user'root'@''(using password: NO)

3.使用存在的用户,且输入密码正确

ERROR 1045 (28000): Access denied for user'root'@''(using password: YES)

4.使用存在的用户,但输入密码不正确

ERROR 1045 (28000): Access denied for user'root'@''(using password: YES)

5.使用不存在的用户,但输入数据库中存在的某一个密码

ERROR 1045 (28000): Access denied for user'root'@''(using password: YES)

6.使用不存在的用户,且输入数据库中不存在的一个密码

ERROR 1045 (28000): Access denied for user'root'@''(using password: YES)

总结:对于 ERROR 1045 (28000): Access denied for user'root'@''此类错误返回时, (using password: ?)中?的

关键字是YES还是NO,关键不在于用户是否存在,密码是否正确,它的结果取决于登录时,用户对于密码有没有字符串的输入,如果没有,MySQL数据库验证后,若出错返回此类信息,则应是 (using password: NO),若用户对密码有字符串的输入,返回的则是

(using password: YES)。

下面分析这类 ERROR 1045 (28000): Access denied for user'usera'@'localhost'错误出现的原因:

原因1 : 客户端远程访问的用户账号并未创建

检查 :

以管理员ROOT登录后,show grants for'user'xxxIP‘; 或者 select user from ; 确认用户账号是否存在。

mysql>show grants for'jtsec'@'';

ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host ''

mysql>

返回信息:ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host ''

说明,没有jtsec用户,或者没有对jtsec用户进行在远程访问的授权。

mysql>select user,host from ;

+-------+---------------+

| user | host         |

+-------+---------------+

| root | localhost    |

+-------+---------------+

1 rows in set ( sec)

mysql>

关于user记录数只有一条,是root,并没有jtsec相关的记录,说明没有数据库中没有jtsec这个帐号。

处理 :创建用户账号。

mysql> grant all privileges on *.* to'jtsec'@''identified by 'jtsec' with grant option;

Query OK, 0 rows affected ( sec)

mysql>flush privileges;

Query OK, 0 rows affected ( sec)

mysql>show grants for'jtsec'@'';

+---------------------------------------------------------------------------------------------------------------------------------------------+

| Grants forjtsec@|

+---------------------------------------------------------------------------------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO'jtsec'@''IDENTIFIED BY PASSWORD '*0B4AB716B6BE11F89101577836F3016D8EEAA217' WITH GRANT OPTION |

+---------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set ( sec)

mysql>select user,host from ;

+-------+---------------+

| user | host         |

+-------+---------------+

| jtsec | |

| root | localhost    |

+-------+---------------+

2 rows in set ( sec)

mysql>

原因2 : 用户账号存在,但未对其所在的客户端的IP进行远程访问授权允许

检查 :

以管理员ROOT登录后 show grants for'user'@'IP';

mysql>show grants for'root'@'';

ERROR 1141 (42000): There is no such grant defined for user 'root' on host ''

mysql>

返回信息:ERROR 1141 (42000): There is no such grant defined for user 'root' on host ''

说明,没有root用户(因为是MySQL超级用户所以排除此种可能),或者没有对root用户进行在远程访问的授权。

我们来对比一下看,root用户本地访问的权限,则可查出:

mysql>show grants for'root'@'localhost';

+----------------------------------------------------------------------------------------------------------------------------------------+

| Grants forroot@localhost|

+----------------------------------------------------------------------------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO'root'@'localhost'IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION |

+----------------------------------------------------------------------------------------------------------------------------------------+

1 row in set ( sec)

或者直接查询mysql的user用户表select user,host from ;,其中记录了每一个用户的权限信息

mysql>select user,host from ;

+-------+---------------+

| user | host         |

+-------+---------------+

| root | localhost    |

+-------+---------------+

1 rows in set ( sec)

mysql>

关于user值为root的记录数只有一条,且host值为localhost,说明root用户只能在本地访问数据库。

处理 :进行root用户的远程访问授权,可以授权到指定的客户端IP,也可以授权为所有IP都可访问(host值为%)。

授权为所有IP都使用用户root,密码root,来远程访问数据库

mysql>GRANT ALL PRIVILEGES ON *.* TO'root'@'%'IDENTIFIED BY 'root' WITH GRANT OPTION;

Query OK, 0 rows affected ( sec)

mysql>flush privileges;

Query OK, 0 rows affected ( sec)

再次进行授权的查询

mysql>show grants for'root'@'%';

+--------------------------------------------------------------------------------------------------------------------------------+

| Grants forroot@%|

+--------------------------------------------------------------------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO'root'@'%'IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' WITH GRANT OPTION |

+--------------------------------------------------------------------------------------------------------------------------------+

1 row in set ( sec)

再次查询授权表记录

mysql>select user,host,password from ;

+-------+---------------+-------------------------------------------+

| user | host         | password                                 |

+-------+---------------+-------------------------------------------+

| root | localhost    | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |

| root | %            | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |

+-------+---------------+-------------------------------------------+

2 rows in set ( sec)

mysql>

原因3 : 用户账号授权访问的密码不正确

检查 :以管理员ROOT登录后, select user,host,password from ;

mysql>select user,host,password from ;

+-------+---------------+-------------------------------------------+

| user | host         | password                                 |

+-------+---------------+-------------------------------------------+

| root | localhost    | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |

| root | %            | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |

| jtsec | |                                          |

| jtsec | | *0B4AB716B6BE11F89101577836F3016D8EEAA217 |

+-------+---------------+-------------------------------------------+

4 rows in set ( sec)

mysql>

根据查询结果可以看出来,root账户的本地访问和远程访问密码一样,

而jtse账户在这个IP上,远程访问数据库的密码有两个,其中一个为空(第三条记录)。

也就是说在IP为的客户机上,使用jtsec这个账户远程访问数据库,合法的密码有两个可以选择:

一个是不输入密码(密码为空),另一个是*0B4AB716B6BE11F89101577836F3016D8EEAA217(经过加密的),

其余的输入,都是错的。

处理 :使用正确的访问密码进行访问即可。

===================================================================================

错误信息 :ERROR (HY000): Can't connect to MySQL server on '' (10065)

原因 :MySQL服务器上防火墙的阻断

检查 :在Linux下查看iptables规则,看是否未对MySQL数据库默认通信端口3306进行放行

处理 :

添加相应的放行规则

自己在  /etc/sysconfig/iptables 里加了一下代码:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

或尝试关掉防火墙

chkconfig ip6tables off

chkconfig iptables off

问题描述:

C:\Documents and Settings\_>mysql -uroot -h -proot

ERROR 2003 (HY000): Can't connect to MySQL server on '' (10065)

C:\Documents and Settings\_>

===================================================================================

错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)

原因 : mysqld数据库服务没有启动。

检查 :在windows 的任务管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。确认服务已经启动。

处理 :启动mysqld 服务

===================================================================================

错误信息 :ERROR 1130: Host is not allowed to connect to this MySQL server

原因 : mysql服务器没有赋予此客户端远程连接的权限。

检查 :在mysql服务器本地查询mysql库里user表对应的host是否包含客户端机器的IP(%为不限制IP允许远程连接)。

处理 :修改mysql库下的user表:update user set host = '%' where user ='XXX';flush privileges;

===================================================================================

错误信息 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)

原因 : 用户账号并未创建,远程登录时登录指令未直接包含密码项

检查 :以管理员ROOT登录后,show grants for 'usera'@'localhost'; 或者 select user from ; 确认用户账号是否存在。

处理 :创建用户账号。

===================================================================================

错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)

原因 : mysqld 客户端与服务端端口不一致。

检查 :在 设置下服务端口 这种情况特别是客户都与远程服务器端口不一致 很容易出现的问题

处理 :启动mysqld 服务

===================================================================================

错误信息 :ERROR (HY000): Can't connect to local MySQL server server through socket '/var/lib/mysql/'(111)

原因 : mysqld的没在相应的位置。

处理 :

1.先查看/etc/ status 看看是否启动

2.改权限 chown -R mysql:msyql /var/lib/mysql

3.修改/etc/ (注意:先停数据库)

[mysqld]

datadir=/usr/local/mysql/data

socket=/var/lib/mysql/

user=mysql

basedir=/usr/local/mysql

[client]

socker=/var/lib/mysql/

4.启动数据库

===================================================================================

常用检查步骤。

解决问题总结 第2篇

《课堂教学问题诊断与解决》读后感

渭南市实验初中    xxx

最近,认真阅读了xxx主编的初中语文《课堂教学问题诊断与解决》一书,我不敢说收获很多,因为很多东西是很难一下子吸收的,但是这本书通过一个个生动案例的诠释,让我读完不禁眼前一亮,为之震撼,不能说找到了自己的课堂存在着的问题全部的解决方法,但至少可以在以后的课堂教学中,让自己少走点弯路。

《课堂教学问题诊断与解决》一书共有十四个问题,书中的每一个问题都按照现场写真、问题诊断、理论点拨、解决策略、成功案例、资源拓展六部分组成。

这本书里有着对课程性质的定位,有着对学生学习方式的阐述,学生主体意识的的关注,有着对文本处理、教学技艺、课堂评价、语文教学资源的开发与提炼等的思考,有着对课堂生成的关注,课后作业的'布置的点拨。这本书凝聚着专家和骨干教师们对课堂问题会诊后的处理智慧,给我们的课堂指出了存在的问题,同时给我们指点了迷津,探讨了教学的方向。

结合我们最近研究的课题,我重点研读了以下问题:如何培养学生自助修改作文的习惯和能力?怎样培养学生发现问题的能力?

当阅读到“如何培养学生自助修改作文的习惯和能力?”我是无比的兴奋,因为作文批改历来就是作文教学的难点,我们主要采取的方式是精批细改,结果却是学生对老师的修改不领情,作文水平也没有因为教师的一片苦心而真正提高。从阅读中我了解到出现这种状况的根本原因就是我们忽视了学生的自我修改和相互批改,也就是将学生自主学习与合作学习两种学习方式忽视了,从而阻止了学生自我发展的动力。解决策略中提出可以从以下几点入手培养学生自主修改作文的能力。()1、注重引导,激发兴趣;2、教师给予指导,具有相对的可操作性;3、拟定批改标准;4、提供修改范例;5、交给方法,培养习惯。学生修改作文最大的困难就是找不到修改角度,成功案例又为我们提供了切实可行的操作方法。对于本章的阅读让我对作文批改有了新的认识,教师一定要转变观念,把学习的自主权还给学生。

“怎样培养学生发现问题的能力?”同样探讨的是学生自助学习能力培养的问题。从目前的教学情况来看,教师对学生发现问题的意识培养还欠缺,学生缺少提出问题的能力,主要原因是没有养成提问的好习惯。包括两种情况:一是学生不愿提出问题,二是学生提不出有效问题。学生提不出问题的主要原因是教师“唯我独尊”的教学风格所致。学生提不出问题的原因归结为以下几点:一是教师没有给学生提出问题创造必要的机会和条件。二是学生缺少必要的提问经验和技巧。从书中我了解到可以通过以下途径解决此问题:1、抓住学生学习中已知与未知的矛盾,是培养学生发现问题的关键。我认为这一点就是要调动学生的求知激情。2、要鼓励学生深入的发现问题。当学生发现的问题得到老师的赞许,这对学生自信心的培养也是一种帮助。3、教学生会生疑。我想这可能就是“有疑”才“有得”吧。

在阅读过程中我想到了我校成功推广的“问题探究式教学模式”,这种教学模式充分体现了“学生是学习和发展的主体”的思想,引导学生改变传统的“接受性”学习,采用自主、合作、探究的学习方法,让学生自己发现问题、提出问题,解决问题,既重视学习结果,更重视学习过程。

有人说,读书的目的不是为了记住他人的思想,而是为了自己变得更有思想。我想我会带着自己的思考继续阅读,形成自己的语文教学风格。

解决问题总结 第3篇

对课程设计的会计部分和设计部分的案例分别进行了分析。

会计部分—— 1、操作一个公司较为完整的会计循环。通过案例一复习巩固了中财学习的会计循环并和财务报表尽心联系编制企业财务报表。

2、对于生产企业的固定资产处理进行了详细的核算。包括固定资产计提折旧资产减值准备 无形资产的摊销以及运用高财所学知识计算因账面价值和计税基础不同而产生的暂时性差异及其对所得税影响的计算。

3、案例三锻炼了我们对知识的综合运用能力。非货币资产交换、债务重组、长期股权投资、投资性房地产等知识进行综合。非货币资产的计量换入成本的计算差额的处理。债务重组债务人与债权人各项差额的处理长期股权投资权益法的具体处理损益调整明细科目的会计核算。

4、租赁时现代企业的一项重要的经济活动。

它兼有商品信贷和资金信贷的双重特性。从承租人、出租人的角度以经营租赁融资租赁方式进行计算分录各不相同。

因具体问题具体分析。对我来说尤其是出租人融资租赁中涉及的最低租赁收款额、 未担保余值的确定利用尊林内涵率对未实现融资收益进行分摊掌握的很不好在此处需要格外加强联系。

5、新会计法中研发费用资本化的问题。这个很重要的。对于扩大公司资产是个很好的规则也好确认智力转化为资产的问题。

审计部分——

1、收入与成本的确认按完工程度确认。很多公司按收到金额确认或是完工才确认这样会影响公司财务数据的真实反映。影响财务报表和审计人员出具审计报告。

2、注册会计师根据不同的情况出具不同的内控对加强企业风险管理、保证财务报告的可靠性提高企业经营效益都有重要意义。

3、对于存货的盘点程序和注意事项有进一步更具体更确切的了解。

在盘点过程中会发现很多问题类似于盘点过程中所使用的存货盘点标签没有连续编号 盘点结束时盘点标签的收集过程控制不力 盘点过程中存货生产和收发的截止、盘点现场存货的移动等控制不够等。

盘点中有一些要注意的问题 1所有参加盘点工作的盘点人员对于本身的工作职责及应行准备事项必须深入了解。

2盘点使用的单据、报表内所有栏位若遇修改处均须经盘点人员签认始能生效否则应查究其责。

3盘点开始至工作终了期间各组盘点人员均受复盘人指挥监督。盘点结束后审计人员应将盘点情况及盘点结果写成书面材料填制好各种盘点表格 企业经办人员会签后作出记载并整理成工作底稿。盘存结果与帐面数量有差异时应由审计人员和盘存小组进行调查研究提出处理的意见与盘存单一并作为工作底稿。对清查出来的报废、报损、残损应编制单独的检查盘点表写明损失程度及损失金额并提出处理意见列入审计工作底稿。对盈亏较大的存货与有关人员一起追查原因和处理意见对需要继续查清的问题提请会计人员会同其他职能部门组织转入清查。如未直接参与客户存货盘点的则应在审计外勤日对被审计单位的重要存货项目进行实地盘点 并在获取有关存货项目在资产负债表日至盘点日之间所有增减变动的会计记录的基础上进行倒轧测试。

4、对于发生不同时段的期后事项注册会计师应承担的责任的认识上又有了更明确的区别。通过几道案例分析题运用课本所学习的知识来解决现实中可能存在的问题使学习的知识记忆的更牢固也更好得理解了。

5、对于重要的审计程序检查记录和文件、检查有形资产、观察、询问。函证、重新计算、重新执行、分析程序。了解他们的作用具体程序具体分析。

从了解案例分析案例到解决存在问题我学到了很多。以前很多看似掌握的知识。实际却没有彻底的弄明白。通过做题才反映了出来。这次课程设计我深深体会到了积累知识的重要性。有些题目书本上没有提及所以我就没有去研究过做的时候突然间觉得自己真的有点无知虽所现在去看依然可以解决问题但还是浪费了许多时间这一点是我必须在以后的学习中加以改进的。

另外一点,也是在每次课程设计中必不可少的部分就是同学之间的互相帮助有些东西感觉自己做的是时候明明没什么错误偏偏算完的时候就是有错误 让其同学帮忙看了一下发现其实是个很小的错误。所以说相互帮助、共同合作是很重要的一点。这在以后的工作或生活中也很关键的。我也要养成仔细对待问题的习惯做一名合格的称职的会计。

解决问题总结 第4篇

企业财务分析报告问题的解决

在风云变幻的市场中,每个行业的发展都不是一帆风顺的,医药行业也不例外。下半年以来医药行业表现出总体疲软的态势。××制药股份有限公司在前三季度实现营业收入458 069 元,与去年同期相比增长,公司股东的净利润达87 206 元,比去年同期增长。其中,该公司第三季度实现营业收入147 025 元,与去年同期相比增长;净利润达26 834 元,比去年同期增长。每股收益元,比去年同期增长。公司的股东或者潜在投资人,可以根据这些数据做出是否增资或投资的决策。那么,这些数据从哪里能够更直接、简便地获取?答案是该药业公司的财务分析报告。

1药业公司的财务分析报告

财务分析报告宛如一方魔镜,它不仅把企业生产经营的现状在利益相关者面前完整地映照出来,而且还对企业未来的发展状况进行了有意义的预测。药业公司的财务分析报告是指通过对医药公司财务活动的过程及结果进行分析和评价,最终形成反映企业偿债能力、成长能力、经营能力、分配能力的书面报告。

财务分析报告无论是对药业公司本身还是对外部决策者都具有十分重要的意义:对于药业公司而言,有利于公司的经营管理者做出科学的决策;对于外部利益相关者而言,有利于其对药业公司经营状况的整体把握;另外,企业的财务分析报告也可为国家检查药业公司是否遵循相关法律法规提供资料,并从整体上反映整个医药行业的发展趋势,从而为国家宏观决策提供参考。

财务分析的方法有很多。趋势分析法可以时间为比较基准,通过分析企业在不同期间的经营效果,从而得出评价的结果。比如分析药业公司不同期间的净利润,可以整体上把握公司利润的增减趋势。比率分析法是通过做商的方式,反映某一项目在另一项目中所占的比重,比如权益乘数,资产负债率,流动比率等。比较分析法则是通过将两者进行做差的方式进行分析的方法,比如通过对营运资本的分析,来评价药业公司的短期偿债能力。根据分析所依据财务报告的期限,可将财务分析报告分为年度财务分析报告、半年度财务分析报告及季度财务分析报告。

我国的药业公司随着市场经济的发展而日渐成熟,其财务信息透明度不断加强,财务分析报告逐步规范化。药业财务分析报告为报告使用者提供了企业偿债能力、营运能力、盈利能力、成长能力以及现金流量等数据参考资料。药业公司的管理者和外部报告使用者可以据此从整体上把握公司经营状况,从而做出有利于自身的经济决策。

解决问题总结 第5篇

一、强化组织队伍。

镇党委政府高度重视农村改厕工作,成立了由书记镇长任组长的领导组,明确分管负责人和经办人。各村成立由联系村班子成员任组长的`村级工作组,并明确一名经办人员,专门负责改厕工作,确保工作推进。

二、全面宣传摸底。

各村按照经办人牵头的原则,由分片村干分头进行改厕工作宣传动员和摸底登记。在全面摸底的基础上,按照自主申请、先易后难的原则遴选出xx年改厕农户名单,确保改厕顺利实施。

三、注重群众主体。

坚持政府主导、群众主体,坚决不搞强迫命令。愿意开展改厕的农户主动向村委会申请,在明确主动参与协助改厕等义务的基础上签订承诺协议,确保合力推进。对于少数改厕过程中不予配合的农户,及时予以动态调整。

四、坚持因地制宜。

一是合理确立模式。为尽快发挥改厕效益,我镇确立了从室内坐便器到室外污水处理一体化的改厕模式。二是科学分类实施。我镇改厕多采用在室内洗澡间装配坐便器,室外装配化粪池的方式开展;对于少数砖混结构旱厕采用就地改造。这样即节约用地,节省成本,又提升了农村形象。

五、保障资金投入。

在各级专项资金基础上,我镇按照300元/户的标准为室内没有坐便器的农户统一安装坐便器,确保建成一个使用一个。

六、科学统一实施。

我镇采取“六个统一”确保改厕工作实施到位。一是统一标准,严格按照省改厕图纸施工;二是统一采购,采购正规厂家的装配式三个化粪池;三是统一培训,邀请化粪池厂房对施工人员进行集中现场施工培训;四是统一施工,通过招投标程序分四个标段开展全镇改厕施工,签订合同,明确任务和时限,确保按时按质完成任务;五是统一监管,镇村改厕工作组实行每周一巡查,发现施工和质量问题立即整改。工作六是统一验收,由镇、村改厕工作组严把验收标准,不合格的通过整改符合要求后再予以验收。

解决问题总结 第6篇

「年度工作总结」--问题分析与总结「1」

2.如何创建GUID?

创建GUID,并将其转换成字符串形式。

CoCreateGuid(&guid);

StringFromGUID2(guid,wszGuid,_countof(wszGuid));

3.宏定义:VC_EXTRALEAN,WIN32_LEAN_AND_MEAN的意义

VC_EXTRALEAN和WIN32_LEAN_AND_MEAN用于排除Windows头在很少使用的服务,以此来减少Win32头文件的.大小。但注意,VC_EXTRALEAN只能应用于MFC项目。

其中,VC_EXTRALEAN在有如下定义:

WIN32_EXTRA_LEAN NOSERVICE NOMCX NOIME NOSOUND NOCOMM NOKANJI NORP_OPROXYSTUB NOIMAGE NOTAPE

对于高版本VC所向导应用程序会自动受益于VC_EXTRALEAN。

const与#define的比较

enum比const更高级,const在除条件编译情况下比#define更合适定义固定值。

1.只是声明单一固定值,尽可能采用const。

2.如果是一组固定值,并且互相有关联,则采用enum。

3.不涉及条件编译,只是定义固定值的情形下,尽可能不使用#define。

语言中sizeof与strlen区别

.本质区别

sizeof和strlen有本质上的区别。sizeof是C语言的一种单目运算符,如++、--等,并不是函数,sizeof的优先级为2级,比/、%等3级运算xxx级高,sizeof以字节的形式给出操作数的存储空间的大小。而strlen是一个函数,是由C语言的标准库提供的。strlen计算的是字符串的长度。

.使用区别

的使用

sizeof不管是变量(数组)还是数据类型,所得到都是该对象所占内存空间大小,而对于函数,表达式,其结果与表达式最终结果类型或函数返回结果类型的大小相关,且函数是不会被执行的。(若返回void值则会发生编译错误,在vs下---error C2070:'void':illegal sizeof operand

其中,C99标准规定,函数、不能确定类型的表达式以及位域(bit-field)成员不能被计算sizeof值,即下面这些写法都是错误的:

如:是可以的))

或者sizeof一个void返回类型的函数如:

void foo(){}

sizeof(foo());

以及位域:

struct S

unsigned int f1:1;

unsigned int f2:5;

unsigned int f3:12;

sizeof();