在c语言中,用typedef重命名后,原来的变量名还可以用吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在c语言中,用typedef重命名后,原来的变量名还可以用吗相关的知识,希望对你有一定的参考价值。

比如说,我用typedef int INTEGER将int定义为INTEGER,以后还可以用int来定义整形变量吗?

可以使用的。
typedef相当于给原本的类型起了一个“别名”。
比如
typedef unsigned char U8;
这样用到U8的地方,就和直接使用unsigned char 相同了。
但是这只是给unsigned char增加了一个新的名字,并不是改名,原本的unsigned char还是可以继续用的。
不过,在同一个项目中,如果已经定义了新名字,就尽量不要使用原本的名字了,给代码的阅读和维护会带来麻烦。
参考技术A 可以,typedef定义的是新类型,不是变量,用来定义的原有的类型不会消失本回答被提问者采纳 参考技术B typedef是用来定义类型的,而不是用来定义变量的。而且它的含义是起别名,原来的名字是不会失效的。typedef是一种定义抽象类型的轻量级方法,比如你创建链表,元素的类型你如果定义成int,那么以后改成double的时候就要每个地方都改,但如果你事先用typedef定义了一个element类型,那么想修改成double的时候,就只用修改typedef就可以了。
当然,typedef出来的别名只在你需要这个抽象类型的地方使用就行了,比如你给int定义成了element类型,你定义循环计数器的时候难道还要用element i = 0; 么,显然用int就行了。
参考技术C 首先,typedef int INTEGER 不是 将int定义为INTEGER,而是定义了一个int类型的类型,名字叫INTEGER。所以int显然可以使用追问

防止考试会考

参考技术D 可以
typedef 相当于 别称

Eclipse中复制项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题

转载自: http://www.cnblogs.com/chenxueling/p/5474717.html

 

 

将20170331-JavaEE-SSH项目复制一份,重命名为20170407-JavaEE-SSH。

运行20170407-JavaEE-SSH项目里的jsp,结果报错如下:

严重: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/20170331-JavaEE-SSH]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:587)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1798)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@524abdbf]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4969)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5099)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 10 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [E:\\apache-tomcat-8.0.37\\webapps\\20170331-JavaEE-SSH] is not valid
at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:727)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:688)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 13 more

页面信息如下:

可以看到复制之后的项目的运行路径仍然是之前的那个项目。

 解决办法:

第一步,单击新的项目,右键-->properties-->Web Project Settings-->Context root,改成目标名称。

 

第二步:通过以上方式修改完毕后,运行项目,会发现地址栏中仍是老项目名,这时需通过以下设置去改变:

进入工程的workspace,打开.settting文件夹,用记事本打开org.eclipse.wst.common.component文件,将该文件的三处改成目标名称:

 

第三步:在Servers目录下的Tomcat..config目录下找到server.xml,找到Context节点,将docBase,path的项目名都修改成目标名:

 

至此,修改工作完毕,但还是请你耐心看完接下来的“特别说明”吧,因为如果你此时直接运行项目十之八九会有“彩蛋”:

当你重新发布项目时,会发现根本发布不了,出现以下错误:

Could not load the Tomcat server configuration at /Servers/Tomcat v7.0 Server at localhost-config. The configuration may be corrupt or incomplete.

 

 

 

特别说明:

针对你所遇到的“彩蛋”,解决方式很简单,即删除当前的Servers,刷新当前项目,然后发布即可。

以上是关于在c语言中,用typedef重命名后,原来的变量名还可以用吗的主要内容,如果未能解决你的问题,请参考以下文章

C/c++:语言中关键字typedef(类型重命名)enum(整型常量值集合,代替#define)的使用

如何用c语言重命名

C语言 | typedef

函数与指针

typedef的用法结构体

Eclipse中复制项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题