<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Template &#8211; Henry Poon&#039;s Blog</title>
	<atom:link href="https://blog.henrypoon.com/blog/tag/template/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.henrypoon.com</link>
	<description></description>
	<lastBuildDate>Wed, 05 Oct 2022 02:48:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">83044199</site>	<item>
		<title>UBC Engineering Competition 2010</title>
		<link>https://blog.henrypoon.com/blog/2010/11/13/ubc-engineering-competition-2010/</link>
					<comments>https://blog.henrypoon.com/blog/2010/11/13/ubc-engineering-competition-2010/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sat, 13 Nov 2010 11:42:00 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Grab]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Matt]]></category>
		<category><![CDATA[Microsoft PowerPoint]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Office work]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Presentation software]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[Week]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/ubc-engineering-competition-2010</guid>

					<description><![CDATA[UPDATE: Pictures here! A couple weeks ago, a classmate of mine invited me to participate in the UBC Engineering Competition in Senior Design.&#160; After checking the calendar to see if I was free that day, I accepted.&#160; I later found out that the winners of this competition would represent UBC in the Western Engineering Competition [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>UPDATE: Pictures <a href="https://henrypoon.wordpress.com/2010/12/01/ubc-engineering-competition-2010-pictures/" target="_blank" rel="noopener noreferrer">here</a>!</p>
<p>A couple weeks ago, a classmate of mine invited me to participate in the UBC Engineering Competition in Senior Design.&nbsp; After checking the calendar to see if I was free that day, I accepted.&nbsp; I later found out that the winners of this competition would represent UBC in the Western Engineering Competition in Saskatoon, which will take place in January.&nbsp; The problem with this was that three out of the four people on my team had a Co-op work term (myself included).&nbsp; Despite the fact that we knew we weren’t going to the competition, we went to compete anyway.&nbsp; There was little pressure for us, and winning or losing didn’t matter.</p>
<p>Some time later, I realized that my friend’s birthday party was the day before the competition, which meant I probably wasn’t going to get a lot of sleep.&nbsp; Indeed I was right.&nbsp; I got home at about 2:30 in the morning and had to arrive at the competition at 8:30.&nbsp; Before I slept, I read an email that told us to read over the competition materials and to prepare a PowerPoint presentation template for the competition.&nbsp; Seeing that we weren’t aiming to win the competition, I neglected to do any of this preparation.&nbsp; My teammates neglected this as well.</p>
<p>On the morning of the competition, we went through all the registration procedures and find out what the design problem was.&nbsp; Our task was to build an autonomous vehicle that could transport an object and bring it back to the starting location.&nbsp; The only parts we were given was the Vex Robotics Kit, which came with a microcontroller, motors, wheels, and parts to build the frame.&nbsp; We would be scored on how many objects we picked up, the weight of the vehicle, and the team’s presentation performance.</p>
<p>Since we didn’t really aim to win the competition, the team ended up being super chill through the entire competition.&nbsp; One of the officials said to us, “Your team is the least stressful team we’ve seen!”&nbsp; We made so many lame/funny/stupid jokes during the competition and had such great laughs.&nbsp; Throughout the entire competition, I was probably super sleepy, and found no time to rest at all.&nbsp; Despite the fact that we didn’t aim to win, we still tried hard in the competition.</p>
<p>Our strategy was simple: KISS.&nbsp; Keep It Simple Stupid.&nbsp; We realized that in the 5 hours we were given to design it, we did not have time to make anything complex.&nbsp; It made the most sense.</p>
<p>The biggest design issue was the question of how the vehicle was going to know how to return back to its starting location after it leaves.&nbsp; The only sensors we were given were buttons that would be pressed when the vehicle ran into an object.&nbsp; None of these sensors would help us achieve this.&nbsp; We thought of making the robot do a 180 degree turn, but this was difficult since we didn’t really have a way of measuring how many degrees the vehicle had turned.&nbsp; We tried to time it, but the time it took to turn varied depending on how heavy the cargo was.&nbsp; One of my teammates came up with the terrific idea of not rotating at all.&nbsp; The vehicle would drive straight, pick up and then go in reverse back to the starting location.&nbsp; We would then orient the vehicle in another direction to pick up the next object (we were allowed to do this since teams are allowed to touch their vehicle when it is in the starting location).</p>
<p>Going with this strategy, the vehicle would drive in a straight line toward the target object.&nbsp; A sensor placed in the front of the object would be activated when the vehicle hit the object.&nbsp; This would signal a cage to come down and enclose the object.&nbsp; Then the vehicle would go in reverse back to its starting location.&nbsp; The cage was simply a “fence” that was initially raised and then lowered to enclose the object.</p>
<p>After a lot of testing, we were quite confident that ours was going to work.&nbsp; While doing all of this testing and designing, one of my group members made the PowerPoint presentation.&nbsp; It basically talked about how the device worked and our design strategy.</p>
<p>The only preparation for the presentation that we had was just 5 minutes of telling who would present which slide.&nbsp; When it came time for us to present, we looked at the slide and pretty much made up what we were going to say on the spot.&nbsp; Because of this, our presentation seemed quite natural.&nbsp; The fact that we all worked on the project allowed us to all know what we were talking about, so we didn’t stutter a lot.&nbsp; I figure we did okay on the presentations.&nbsp; Nothing spectacular.</p>
<p>After the presentations, each team took turns demonstrating their device.&nbsp; There were a few designs that were definitely innovative, ambitious, and simple.&nbsp; Among these, there was one that lowered a large arm onto the ground and sweep in a 360 to catch all the objects and return them all home at the same time.&nbsp; It was a interesting design, but there was no way for the robot could do a perfect 360, since it was impossible to get the timing for it right and the power the motors gave would not be enough to move the entire load.&nbsp; There was also a design that relied on randomly searching the entire field for an object and then moving around the perimeter of the field to return home.&nbsp; This was the most ambitious design, but it didn’t work out because its random searching didn’t find any objects to grab.&nbsp; Another team relied on the same principle as ours but were heavier.</p>
<p>As each team demonstrated their vehicle, it became apparent that our team had a big chance of winning.&nbsp; We were very confident that we would get at at least one object, and our vehicle was the lightest one.&nbsp; The team with the lightest vehicle would score the most points in terms of weight.&nbsp; But for object retrieval, no team retrieved more than one object.&nbsp; It was either one or zero.&nbsp; If our vehicle grabbed even one object, we would be in first place for vehicle performance.&nbsp; When it became our team’s turn to demo, our vehicle worked exactly the way we wanted it to.&nbsp; We grabbed one.&nbsp; We went on the grab another, but due to us failing to aim the vehicle properly, we failed to grab a second.&nbsp; But it didn’t matter, we were in the lead in points.&nbsp; Since no team grabbed more than one, we placed first in terms of vehicle performance.&nbsp; We had a chance to win.</p>
<p>After the officials calculated the totals of all the scores, my team placed first out of twelve teams!&nbsp; The best part about this is that even though we did zero preparation, we came out on top because we executed our design strategy better than the other teams.&nbsp; We made use of the testing time to make sure our project actually worked.&nbsp; It seemed like a lot of the projects weren’t tested that thoroughly, but that might have to do with the intense time pressure and a complex design.&nbsp; The lack of pressure to win allowed us to perform so much better.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2010/11/13/ubc-engineering-competition-2010/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">449</post-id>	</item>
		<item>
		<title>Description of C++ Keywords</title>
		<link>https://blog.henrypoon.com/blog/2010/01/18/description-of-c-keywords/</link>
					<comments>https://blog.henrypoon.com/blog/2010/01/18/description-of-c-keywords/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 19 Jan 2010 04:44:44 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Assembly language]]></category>
		<category><![CDATA[British Columbia]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ classes]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Compilers]]></category>
		<category><![CDATA[Computer languages]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Data types]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Monday]]></category>
		<category><![CDATA[Nature]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Outside]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Parameter]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Programming languages]]></category>
		<category><![CDATA[RAR]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[Sizeof]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Sunday]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Typedef]]></category>
		<category><![CDATA[Typename]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[University of British Columbia]]></category>
		<category><![CDATA[Variable]]></category>
		<category><![CDATA[Virtual function]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Week]]></category>
		<category><![CDATA[Words]]></category>
		<category><![CDATA[ypres]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/description-of-c-keywords</guid>

					<description><![CDATA[Source: The University of British Columbia asm (seldom used) Used to insert assembly language commands directly into the code. This function is very tricky to use even for professional programmers and can cause portability issues. asm(&#8220;instruction&#8221;); auto Used to declare local variables but is purely optional. auto int i = 5; The previous declaration thus [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source: The University of British Columbia</p>
<p><strong><code>asm</code></strong> (seldom used)</p>
<ul>
<li>Used to insert assembly language commands directly into the code. This function      is very tricky to use even for professional programmers and can cause portability      issues.<br />
<blockquote><p>asm(&#8220;instruction&#8221;);</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="auto"></a>auto</code></strong></p>
<ul>
<li>Used to declare local variables but is purely optional.<br />
<blockquote><p>auto int i = 5;</p></blockquote>
<p>The previous declaration thus has identical meaning to the following declaration.</p>
<blockquote><p>int i = 5;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="bool"></a>bool</code></strong> (C++ only)</p>
<ul>
<li>Used to declare a Boolean logic variable; a variable that can have the value      true or false. This variable type      is normally 8 bits (1 byte) long.<br />
<blockquote><p>bool t = true;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="break"></a>break</code></strong></p>
<ul>
<li>Used to break out of a loop independant of the loop condition. Also, used      to finish a switch statement, keeping the program from      &#8220;falling through&#8221; to the next case in the code.<br />
<blockquote>
<pre>while(x &lt; 100)
{
    if(x &lt; 0)
         break;
    cout &lt;&lt; x &lt;&lt; endl;
    x++;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="case"></a>case</code></strong></p>
<ul>
<li>Used as a label to declare a single test in a switch statement.<br />
<blockquote>
<pre>case 1: command1;
        command2;
        break;
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="catch"></a>catch</code></strong> (C++ only)</p>
<ul>
<li>Used to handle exceptions generated by a throw statement.<br />
<blockquote>
<pre>catch(const char* e)
{
    //handle exception
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="char"></a>char</code></strong></p>
<ul>
<li>Used to declare character variables. This variable type is normally 8 bits      (1 byte) long.<br />
<blockquote><p>char c = &#8216;h&#8217;;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="class"></a>class</code></strong> (C++ only)</p>
<ul>
<li>Used to define a new class. Members of the class are private by default unless listed under the protected or public labels.<br />
<blockquote>
<pre>class class-name : inheritance-list
{
    public:
        public-members-list;
    protected:
        protected-members-list;
    private:
        private-members-list;
} object-list;
</pre>
</blockquote>
<ul>
<li>class-name is the name of the class that is being created.</li>
<li>inheritance-list is the optional list of classes inherited by the new          class.</li>
<li>public-members-list is the list of public members          of the class.</li>
<li>protected-members-list is the list of protected members of the class.</li>
<li>private-members-list is the list of private members          of the class.</li>
<li>object-list is an optional list used to immediately instantiate 1 or          more instances of the class.</li>
</ul>
<blockquote>
<pre>class Date
{
public:
    void display();

private:
    int day;
    int month;
    int year;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="const"></a>const</code></strong> (C++ only)</p>
<ul>
<li>Used to tell the compiler that a certain object should not be modified once      it has been initialized.<br />
<blockquote><p>const int i = 5;</p></blockquote>
</li>
<li>Used to declare a pointer so that the value of the pointer (the memory     location to which it points)     <span style="text-decoration:underline;">can</span> be modified, but the data in the memory location <span style="text-decoration:underline;">cannot</span> be changed.<br />
<blockquote><p>const int* j = new int(3);</p></blockquote>
</li>
<li>Used to declare a pointer so the that value of the pointer (the memory     location to which it points)     <span style="text-decoration:underline;">cannot</span> be modified, but the data in that memory location <span style="text-decoration:underline;">can</span> be changed.<br />
<blockquote><p>int* const j = new int(3);</p></blockquote>
</li>
<li>Used to declare a member function that does not modify the object&#8217;s state,      meaning that it should be used for methods like print so that data in the     object cannot      be changed accidentally. If and attempt is made     to modify the object in any way, a compilation error will be triggered.<br />
<blockquote><p>void print(bool verbose) const;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="const_cast"></a>const_cast</code></strong> (C++ only, seldom used)</p>
<ul>
<li>Used to remove the const protection on a variable as      long as the original variable was not declared as a const.      The target type must be the same as the original type.<br />
<blockquote><p>const_cast&lt;target_type&gt; (object);</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="continue"></a>continue</code></strong></p>
<ul>
<li>Used to jump to the next iteration of a loop. The following example will      print out all of the numbers from 1 to 20 except for 10.<br />
<blockquote>
<pre>for(int i = 0; i &lt; 21; i++)
{
    if(i == 10)
        continue;
    cout &lt;&lt; i &lt;&lt; endl;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="default"></a>default</code></strong></p>
<ul>
<li>Used as a label to declare the default case of a switch statement.<br />
<blockquote>
<pre>case 1:  command1;
         command2;
         break;

default: command1;
         command2;
         break;
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="delete"></a>delete</code></strong> (C++ only)</p>
<ul>
<li>Used to free memory allocated for a pointer back to the heap. The argument      should have been allocated through a call to new. To delete      an array, use the following form of delete: delete[]<br />
<blockquote>
<pre>delete p;
delete[] pArray;</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="do"></a>do</code></strong></p>
<ul>
<li>Used to create a loop that is executed at least once. The terminating condition      is tested at the end of the loop.<br />
<blockquote>
<pre>do
{
    cout &lt;&lt; "hello worldn";
    i++;
} while(i &lt; 5)
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="double"></a>double</code></strong></p>
<ul>
<li>Used to declare a double-precision floating-point type variable. This variable      type is normally 64 bits (8 bytes) long.<br />
<blockquote><p>double d = 12.55;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="dynamic_cast"></a>dynamic_cast</code></strong> (C++ only, seldom used)</p>
<ul>
<li>Used to cast from one type to another with a check performed at runtime.      If the cast types are incompatible, NULL is returned.<br />
<blockquote><p>dynamic_cast&lt;target_type&gt; (object);</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="else"></a>else</code></strong></p>
<ul>
<li>Used for an alternative condition in an if statement.<br />
<blockquote>
<pre>if(i == 1)
{
    // do something
}
else
{
    // do something else
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="enum"></a>enum</code></strong></p>
<ul>
<li>Used to define an enumerated type. Each of the names in the name-list are      given a distinct value. This should be used in place of defining variables      using &#8220;magic numbers&#8221; (eg. int Monday = 0, int Tuesday = 1, etc).<br />
<blockquote>
<pre>enum name {name-list};</pre>
</blockquote>
<ul>
<li>name is the name of the enumerated type that was created</li>
<li>name-list is the list of names of the elements</li>
</ul>
<blockquote>
<pre>enum weekdays {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="explicit"></a>explicit</code></strong> (C++ only)</p>
<ul>
<li>Used to make sure that a constructoor is only used for the creation of new      values and not used for the implicit conversion between two different types.      It will only be be used if the initialization exactly matches the call to      that constructor. This keyword is only needed with one-argument constructors.<br />
<blockquote>
<pre>class vector
{
    ...
    explicit vector(int v);
    ...
}
</pre>
</blockquote>
<p>Using this keyword, some mysterious errors can be caught by the compiler like      the following:</p>
<blockquote>
<pre>vector&lt;int&gt; v(10);
v = 5; // error, meant to write v[0] = 5
</pre>
</blockquote>
<p>The problem in this code if the explicit keyword was not specified is that      the v = 5 statement would invoke the constructor, creating a new vector of      size 5 and destroying the old one.</li>
</ul>
<hr>
<p><strong><code><a name="export"></a>export</code></strong> (C++ only, seldom used)</p>
<ul>
<li>Used to export a template to other modules. Most compilers require template      definitions to be explicitly specified in the header file since the Comeau      C++ compiler seems to be the only compiler that supports this keyword.<br />
<blockquote>
<pre>// In MyTemplateFunction.h
template
void myTemplateFunction(const T &amp;t1);

// In MyTemplateFunction.cpp
export template
void myTemplateFunction(const T &amp;t1)
{
    ...
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="extern"></a>extern</code></strong></p>
<ul>
<li>Used to inform the compiler of variables and functions that are defined      outside of the current scope or module. Variables defined as extern will not      have space allocated for them since they are defined elsewhere.<br />
<blockquote><p>extern char* message;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="false"></a>false</code></strong> (C++ only)</p>
<ul>
<li>Used to represent the Boolean value false.<br />
<blockquote><p>bool b = false;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="float"></a>float</code></strong></p>
<ul>
<li>Used to declare a single-precision floating-point type variable. This variable&lt;br&gt;      type is normally 32 bits (4 bytes) long.<br />
<blockquote><p>float f = 3.5;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="for"></a>for</code></strong></p>
<ul>
<li>Used to create a loop that is meant to initialize, test and update a variable.<br />
<blockquote>
<pre>for(int i = 0; i &lt; 10; i++)
{
    cout &lt;&lt; "i is " &lt;&lt; i &lt;&lt; endl;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="friend"></a>friend</code></strong> (C++ only)</p>
<ul>
<li>Used to allow another class or function to have access      to the private features of that class.<br />
<blockquote>
<pre>friend void print(bool verbose);
friend class Vector;</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="goto"></a>goto</code></strong> (seldom used)</p>
<ul>
<li>Used to jump to another location in a function specified by a label. This      is generally considered harmful and should not be used unless necessary.<br />
<blockquote>
<pre>goto labelA;
...
labelA:</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="if"></a>if</code></strong></p>
<ul>
<li>Used to create a conditional branch statement so that different code can      be executed under different conditions. The conditions are evaluated in the      order that they appear in the code.<br />
<blockquote>
<pre>if (i &lt; 0)
{
    cout &lt;&lt; "i is negative";
}
else if(i == 0)
{
    cout &lt;&lt; "i is 0n";
}
else
{
    cout &lt;&lt; "i is posativen";
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="inline"></a>inline</code></strong> (C++ only)</p>
<ul>
<li>Used to tell the compiler that the function an its body are inserted into      the calling code meaning that it has to expand the function in-place instead      of just insert a call to the function. Functions that have static data, loops, switches or recursive calls cannot be inlined.<br />
<blockquote>
<pre>inline int test(int A)
{
    ...
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="int"></a>int</code></strong></p>
<ul>
<li>Used to declare an integer type variable. This variable type is normally        32 bits (4 bytes) long.<br />
<blockquote><p>int i = 3;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="long"></a>long</code></strong></p>
<ul>
<li>Used as a data type modifier for the int and double types to indicate that      they may have more bytes then the type has available. This variable type is      normally 32 or 64 bits (4 or 8 bytes) long.<br />
<blockquote><p>long int i = 100000;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="mutable"></a>mutable</code></strong> (C++ only)</p>
<ul>
<li>Used to specify that it is a data field that can be modified even if another      part of the data is declared const.</li>
</ul>
<hr>
<p><strong><code><a name="namespace"></a>namespace</code></strong> (C++ only)</p>
<ul>
<li>Used to create a new scope. Once created, the namespace must be refered      to either directly or with the using keyword.<br />
<blockquote>
<pre>   namespace CartoonNameSpace
    {
        int HomersAge;

        void incrementHomersAge()
        {
            HomersAge++;
        }
    }
    int main() {
        ...
        CartoonNameSpace::HomersAge = 39;
        CartoonNameSpace::incrementHomersAge();
        cout &lt;&lt; CartoonNameSpace::HomersAge &lt;&lt; endl;
        ...
    }
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="new"></a>new</code></strong> (C++ only)</p>
<ul>
<li>Used to allocate a new block of memory for the given type from the heap,      and return a pointer to that block of memory. Allocating arrays can be done      by providing the size of the array in square brackets.<br />
<blockquote>
<pre>pointer = new type;
pointer = new type( initializer );
pointer = new type[size];</pre>
</blockquote>
<ul>
<li>pointer is a pointer to the type that you want to allocate the memory          for</li>
<li>type is the type of the item that is to be stored in the memory that          is allocated</li>
<li>initializer is the optional information for the constructor</li>
<li>size is the size of the array to create</li>
</ul>
</li>
</ul>
<hr>
<p><strong><code><a name="operator"></a>operator</code></strong> (C++ only)</p>
<ul>
<li>Used to specify that you are overloading an operator.<br />
<blockquote>
<pre>   return-type class-name::operator#(parameter-list)
    {
        ...
    }
</pre>
</blockquote>
<ul>
<li>return-type is the return type for the function</li>
<li>class-name is the name of the class that the operator is a part of.          If it is not part of a class, this can be left out along with the &#8216;<strong>::</strong>&#8216;<strong>.</strong></li>
<li># is the operator that is to be overloaded, such as &#8216;++&#8217;. You cannot          overload the #, ##, ., :, .*, or ? tokens.</li>
<li>parameter-list is the list of parameters that the operator will take.          For unary operators, parameter-list should be empty, and for binary operators,          parameter-list should contain the operand on the right side of the operator          (the operand on the left side is passed as this).</li>
</ul>
</li>
<li>There are special conventions for some operators, such as the unary       ++ and &#8212; operators.
<ul>
<li> The unary ++ operator has both prefix (<code>++object</code> and postfix (<code>object++</code>) versions.</li>
<li>
<blockquote>
<pre>   return-type class-name::operator++()
    {
        ...
    }
</pre>
</blockquote>
<p>overloads the prefix version (the value returned is the        value of the object <span style="text-decoration:underline;">after</span> it is incremented, so this        is also known as the pre-increment version because the        increment takes place <span style="text-decoration:underline;">before</span> the value is returned). There is        no parameter specified because ++ is a unary operator.</li>
<li>
<blockquote>
<pre>   return-type class-name::operator++( int )
    {
        ...
    }
</pre>
</blockquote>
<p>overloads the postfix version (the value returned is the        value of the object <span style="text-decoration:underline;">before</span> it is incremented, so this        is also known as the post-increment version because the        increment takes place <span style="text-decoration:underline;">after</span> the value is returned). The parameter        <code>int</code> is not really a parameter (++ is still a unary        operator) but is there soley to differentiate the prefix and        postfix versions.</li>
</ul>
</li>
</ul>
<hr>
<p><strong><code><a name="private"></a>private</code></strong> (C++ only)</p>
<ul>
<li>Used within a class declaration to specify features of that class that can      only be accessed by itself and its friends.<br />
<blockquote>
<pre>class Date
{
public:
    void display();

private:
    int day;
    int month;
    int year;
}</pre>
</blockquote>
</li>
<li>Used to inherit a base class privately, which causes all public and protected members of the base class to become      private members of the derived class.<br />
<blockquote>
<pre>class AlarmClock : private Clock
{
public:
    void display();

}</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="protected"></a>protected</code></strong> (C++ only)</p>
<ul>
<li>Used within a class declaration to specify features of that class that are      private to its own class, but can be inherited by a      derived class.<br />
<blockquote>
<pre>class Date
{
public:
    void display();
protected:
    int day;
    int month;
    int year;
}</pre>
</blockquote>
</li>
<li>Used to inherit a base class, which causes all public and protected members of the base class to become      protected members of the derived class.<br />
<blockquote>
<pre>class AlarmClock : protected Clock
{
public:
    void display()
}</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="public"></a>public</code></strong> (C++ only)</p>
<ul>
<li>Used within a class declaration to specify features of that class that are      accessable to everyone.<br />
<blockquote>
<pre>class Date
{
public:
    void display();
protected:
    int day;
    int month;
    int year;
}</pre>
</blockquote>
</li>
<li>Used to inherit a base class publically, which causes all public and protected members of the base class to become public and protected members of the derived class.<br />
<blockquote>
<pre>class AlarmClock : public Clock
{
public:
    void display()
}</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="register"></a>register</code></strong></p>
<ul>
<li>Used to reccommend that a varibale be placed into a processor register so      that it is optimized for speed but the compiler is not obliged to do so. This      keyword is rarely used anymore since compilers have become better than programmers      at optimizing code.</li>
</ul>
<hr>
<p><strong><code><a name="reinterpret_cast"></a>reinterpret_cast</code></strong> (C++ only), seldom used</p>
<ul>
<li>Used to change one data type in a non-portable way. It is normally used      to cast between incompatible pointer types.<br />
<blockquote><p>reinterpret_cast&lt;target_type&gt; (object);</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="return"></a>return</code></strong></p>
<ul>
<li>Used to cause the execution to jump from the current function back to the      one that called it. An optional value can be returned but the function must      specify the type that it will return.<br />
<blockquote>
<pre>return;
return 5;</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="short"></a>short</code></strong></p>
<ul>
<li>Used as a data type modifier for the int type to indicate that there may      be less bytes then the type has available. This variable type is normally      16or 32bits (2 or 4bytes) long.<br />
<blockquote><p>short int i = 5;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="signed"></a>signed</code></strong></p>
<ul>
<li>Used to specify that the number type provided could potentially be negative,      so it must be stored in a different format. This is the default representation      that is chosen by most compilers if either signed or unsigned is not specified.<br />
<blockquote><p>signed int i = -12;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="sizeof"></a>sizeof</code></strong></p>
<ul>
<li>Used to return the size of the object (in bytes) that is passed to it.<br />
<blockquote>
<pre>int i = 5;
int size = sizeof( i );</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="static"></a>static</code></strong></p>
<ul>
<li>Used outside any function or class as a qualifier to a variable declaration      makes the scope of the variable the file in which the variable is declared,      and the extent is permanent (i.e., it is in the static segment).<br />
<blockquote><p>static int i;</p></blockquote>
</li>
<li>Used inside a function as a qualifier to a variable declaration makes the        scope of the variable the function in which the variable is declared, and        the extent is permanent (i.e., it is in the static segment).<br />
<blockquote>
<pre>void foo()
{
    static int i;
}</pre>
</blockquote>
</li>
<li>Used inside a class as a qualifier to a variable declaration makes the        scope of the variable the class in which the variable is declared, and the        extent is permanent (i.e., it is in the static segment).<br />
<blockquote>
<pre>class bar
{
    static int i;
}</pre>
</blockquote>
</li>
<li>Used outside any class as a qualifier to a function declaration makes the        scope of the function the file in which the function is declared. As with        all functions, the instructions for the function are in the code segment.<br />
<blockquote>
<pre>static void foo()
{
}</pre>
</blockquote>
</li>
<li>Used inside a class as a qualifier to a function (method) declaration makes        the scope of the function the class in which the function is declared (as        with all methods), and the instructions for the method are in the code       segment (as for all functions). What is different is that a static method       is invoked without requiring an object, using the qualifier syntax       <code>class::staticMethod( <em>parameters</em> )</code>, although it can       also be invoked on an object in the class in the usual way. Because no       object is associated with a static method, only static member variables       and other static member functions can be invoked by a static method.<br />
<blockquote>
<pre>class bar
{
    static void foo();
}</pre>
</blockquote>
<p><strong>Note:</strong> A method in a class cannot be both &#8220;static&#8221;        and &#8220;virtual&#8221;. The reason for this is       that virtual functions have to know the object to which they apply       (because of polymorphism) but static methods are not applied to an       object.</li>
</ul>
<hr>
<p><strong><code><a name="static_cast"></a>static_cast</code></strong> (C++ only, seldom used)</p>
<ul>
<li>Used for a normal conversion between types. No runtime checking is performed.<br />
<blockquote><p>static_cast&lt;target_type&gt; (object);</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="struct"></a>struct</code></strong></p>
<ul>
<li>Used to create a structure like a class, but the members      are public by default instead of private.      In C, structs can only contain data, cannot have inheritance and cannot have      data with different visibilities.<br />
<blockquote>
<pre>struct struct-name : inheritance-list
{
        public-members-list;
    protected:
        protected-members-list;
    private:
        private-members-list;
} object-list;</pre>
</blockquote>
<ul>
<li>struct-name is the name of the struct that is being created.</li>
<li>inheritance-list is the optional list of structs inherited by the new          struct.</li>
<li>public-members-list is the list of public members          of the struct.</li>
<li>protected-members-list is the list of protected members of the struct.</li>
<li>private-members-list is the list of private members          of the struct.</li>
<li>object-list is an optional list used to immediately instantiate 1 or          more instances of the struct.</li>
</ul>
<blockquote>
<pre>struct Date
{
    int day;
    int month;
    int year;
}</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="switch"></a>switch</code></strong></p>
<ul>
<li>Used to test an expression of an integer value against many constant integer      values and is commonly used to replace large if()&#8230;else if()&#8230; statements.      Break statements are required between each case statement, otherwise execution will &#8220;fall-through&#8221; to the next case statement. The default case is optional. If provided,      it will match any case not explicitly covered by the preceding cases in the      switch statement.<br />
<blockquote>
<pre>char keystroke = getch();
switch( keystroke )
{
    case 'a':
    case 'b':
    case 'c':
    case 'd':
        KeyABCDPressed();
        break;
    case 'e':
        KeyEPressed();
        break;
    default:
        UnknownKeyPressed();
        break;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="template"></a>template</code></strong> (C++ only)</p>
<ul>
<li> Used to create generic functions and can operate on data without knowing      the nature of that data. They accomplish this by using a placeholder data-type      for which many other data types can be substituted.<br />
<blockquote>
<pre>template void genericSwap( X &amp;a, X &amp;b )
{
    X tmp;

    tmp = a;
    a = b;
    b = tmp;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="this"></a>this</code></strong> (C++ only)</p>
<ul>
<li>Used as a pointer to the current object. All member functions of a class have this pointer.<br />
<blockquote><p>this.print();</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="throw"></a>throw</code></strong> (C++ only)</p>
<ul>
<li>Used together with try and catch statements to create an exception handling system. Throw is used to generate      an exception.<br />
<blockquote>
<pre>try
{
    cout &lt;&lt; "Before throwing exception"&lt;&lt; endl;
    throw 42;
    cout &lt;&lt; "Shouldn't ever see this"&lt;&lt; endl;
}
catch( int error )
{
    cout &lt;&lt; "Error: caught exception " &lt;&lt; error &lt;&lt; endl;
}
</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="true"></a>true</code></strong> (C++ only)</p>
<ul>
<li>Used to represent the Boolean value true.<br />
<blockquote><p>bool b = true;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="try"></a>try</code></strong> (C++ only)</p>
<ul>
<li>Used to attempt to execute exception-generating code.<br />
<blockquote>
<pre>try
{
    cout &lt;&lt; "Before throwing exception" &lt;&lt; endl;
    throw 42;
    cout &lt;&lt; "Shouldn't ever see this" &lt;&lt; endl;
}
catch( int error )
{
    cout &lt;&lt; "Error: caught exception " &lt;&lt; error &lt;&lt; endl;
}</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="typedef"></a>typedef</code></strong></p>
<ul>
<li>Used to create a new type from an existing type.<br />
<blockquote><p>typedef int seconds;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="typeid"></a>typeid</code></strong> (C++ only, seldom used)</p>
<ul>
<li>Used to get a reference to a type_info object that describes the object      it was passed.<br />
<blockquote><p>typeid(object);</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="typename"></a>typename</code></strong> (C++ only)</p>
<ul>
<li>Used to describe an undefined type or in place of the class keyword in a      template declaration.</li>
</ul>
<hr>
<p><strong><code><a name="union"></a>union</code></strong></p>
<p>Used to create multiple data fields that will occupy the same memory location.</p>
<blockquote>
<pre>union Data
{
    int i;
    char c;
};
</pre>
</blockquote>
<hr>
<p><strong><code><a name="unsigned"></a>unsigned</code></strong></p>
<ul>
<li>Used to specify that the int or char provided can only be posative and can      therefore contain a larger number since there is no need to worry about representation      of negative numbers.<br />
<blockquote><p>signed int i = -12;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="using"></a>using</code></strong> (C++ only)</p>
<ul>
<li>Used to import a namespace into the current scope.<br />
<blockquote><p>using namespace std;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="virtual"></a>virtual</code></strong> (C++ only)</p>
<ul>
<li>Used to create virtual functions that can be overridden by derived functions.
<ul>
<li>A virtual function indicates that a function can be overridden in a          subclass, and that the overridden function will actually be used.</li>
<li>When a base object pointer points to a derived object that contains          a virual function, the decision about which version of that function to          call is based on the type of object pointed to by the pointer, and this          process happens at runtime.</li>
<li>A base object can point to different derived objects and have different          versions of the virual function run.</li>
</ul>
<blockquote><p>virtual void print();</p></blockquote>
</li>
<li>Used to create a <span style="text-decoration:underline;">pure virtual function</span> which is a virtual function that      <em> <strong>must</strong></em> be overriden by some derived class.<br />
<blockquote><p>virtual void print() = 0;</p></blockquote>
</li>
<li><strong>Note:</strong> A method in a class cannot be both &#8220;virtual&#8221;        and &#8220;static&#8221;.</li>
</ul>
<hr>
<p><strong><code><a name="void"></a>void</code></strong></p>
<ul>
<li>Used to denote functions that return no value.<br />
<blockquote>
<pre>void print()
{
    cout &lt;&lt; "printn";
}
</pre>
</blockquote>
</li>
<li> Used to create generic variables which can point to any type of data.<br />
<blockquote>
<pre>void *p = 5;
</pre>
</blockquote>
</li>
<li>Used to declare an empty parameter list.<br />
<blockquote>
<pre>void print( void )
{
    cout &lt;&lt; "printn";
}</pre>
</blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="volatile"></a>volatile</code></strong></p>
<ul>
<li>Used to inform the compiler that the variables value can change in unexpected      ways (i.e. through an interrupt), which could conflict with optimizations      that the compiler might perform, so therefore the compiler will not optimize      these variables.<br />
<blockquote><p>volatile Date d;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="wchar_t"></a>wchar_t</code></strong></p>
<ul>
<li>Used to declare a wide character variable. This variable type is normally      16 bits (2 bytes) long.<br />
<blockquote><p>wchar_t c = &#8216;c&#8217;;</p></blockquote>
</li>
</ul>
<hr>
<p><strong><code><a name="while"></a>while</code></strong></p>
<ul>
<li> Used as a looping construct that will evaluate a list of statements as      long as the condition is true. Note: if the condition      starts off as false, the list of statements will never      be executed. (You can use a do loop to guarantee that the      list of statements will be executed at least once.)<br />
<blockquote>
<pre>bool done = false;
while( !done )
{
    ProcessData();
    if( StopLooping() )
    {
        done = true;
    }
}</pre>
</blockquote>
</li>
</ul>
<hr>
<p>Copyright (C) 2000-2005, The University of British Columbia</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2010/01/18/description-of-c-keywords/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">201</post-id>	</item>
		<item>
		<title>List of C++ Keywords and Operators</title>
		<link>https://blog.henrypoon.com/blog/2010/01/18/list-of-c-keywords-and-operators/</link>
					<comments>https://blog.henrypoon.com/blog/2010/01/18/list-of-c-keywords-and-operators/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 19 Jan 2010 04:33:13 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Computer languages]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Data types]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Procedural programming languages]]></category>
		<category><![CDATA[Programming languages]]></category>
		<category><![CDATA[Sizeof]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Typedef]]></category>
		<category><![CDATA[Typename]]></category>
		<category><![CDATA[Union type]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Words]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/list-of-c-keywords-and-operators</guid>

					<description><![CDATA[Keywords asm do if return typedef auto double inline short typeid bool dynamic_cast int signed typename break else long sizeof union case enum mutable static unsigned catch explicit namespace static_cast using char export new struct virtual class extern operator switch void const false private template volatile const_cast float protected this wchar_t continue for public throw [&#8230;]]]></description>
										<content:encoded><![CDATA[<table style="height:288px;" width="484" border="0">
<tbody>
<tr>
<th colspan="5">Keywords</th>
</tr>
<tr>
<td width="125">asm</td>
<td width="125">do</td>
<td width="125">if</td>
<td width="125">return</td>
<td width="125">typedef</td>
</tr>
<tr>
<td>auto</td>
<td>double</td>
<td>inline</td>
<td>short</td>
<td>typeid</td>
</tr>
<tr>
<td>bool</td>
<td>dynamic_cast</td>
<td>int</td>
<td>signed</td>
<td>typename</td>
</tr>
<tr>
<td>break</td>
<td>else</td>
<td>long</td>
<td>sizeof</td>
<td>union</td>
</tr>
<tr>
<td>case</td>
<td>enum</td>
<td>mutable</td>
<td>static</td>
<td>unsigned</td>
</tr>
<tr>
<td>catch</td>
<td>explicit</td>
<td>namespace</td>
<td>static_cast</td>
<td>using</td>
</tr>
<tr>
<td>char</td>
<td>export</td>
<td>new</td>
<td>struct</td>
<td>virtual</td>
</tr>
<tr>
<td>class</td>
<td>extern</td>
<td>operator</td>
<td>switch</td>
<td>void</td>
</tr>
<tr>
<td>const</td>
<td>false</td>
<td>private</td>
<td>template</td>
<td>volatile</td>
</tr>
<tr>
<td>const_cast</td>
<td>float</td>
<td>protected</td>
<td>this</td>
<td>wchar_t</td>
</tr>
<tr>
<td>continue</td>
<td>for</td>
<td>public</td>
<td>throw</td>
<td>while</td>
</tr>
<tr>
<td>default</td>
<td>friend</td>
<td>register</td>
<td>true</td>
<td></td>
</tr>
<tr>
<td>delete</td>
<td>goto</td>
<td>reinterpret_cast</td>
<td>try</td>
<td></td>
</tr>
</tbody>
</table>
<table style="height:141px;" width="252" border="0">
<tbody>
<tr>
<th colspan="3">Operators</th>
</tr>
<tr>
<td width="60" align="CENTER">+</td>
<td width="60" align="CENTER">++</td>
<td width="60" align="CENTER"></td>
</tr>
<tr>
<td align="CENTER">&#8211;</td>
<td align="CENTER">&#8212;</td>
<td align="CENTER"></td>
</tr>
<tr>
<td align="CENTER">*</td>
<td align="CENTER">/</td>
<td align="CENTER">%</td>
</tr>
<tr>
<td align="CENTER">&amp;</td>
<td align="CENTER">&amp;&amp;</td>
<td align="CENTER">||</td>
</tr>
<tr>
<td align="CENTER">&lt;</td>
<td align="CENTER">&lt;=</td>
<td align="CENTER">,</td>
</tr>
<tr>
<td align="CENTER">&gt;</td>
<td align="CENTER">&gt;=</td>
<td align="CENTER">;</td>
</tr>
<tr>
<td align="CENTER">=</td>
<td align="CENTER">!=</td>
<td></td>
</tr>
<tr>
<td align="CENTER">?</td>
<td align="CENTER">:</td>
<td align="CENTER">::</td>
</tr>
<tr>
<td align="CENTER">&gt;&gt;</td>
<td align="CENTER">&lt;&lt;</td>
<td align="CENTER">#</td>
</tr>
<tr>
<td align="CENTER"></td>
<td align="CENTER">&#8216;</td>
<td align="CENTER">&#8220;</td>
</tr>
<tr>
<td align="CENTER">()</td>
<td align="CENTER">[]</td>
<td align="CENTER">{}</td>
</tr>
<tr>
<td align="CENTER">!</td>
<td align="CENTER">^</td>
<td align="CENTER">˜</td>
</tr>
<tr>
<td align="CENTER">.</td>
<td align="CENTER">-&gt;</td>
<td align="CENTER">-&gt;*</td>
</tr>
</tbody>
</table>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2010/01/18/list-of-c-keywords-and-operators/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">193</post-id>	</item>
		<item>
		<title>How to manually uninstall the 2007 Office system if you cannot uninstall it by using the &#8220;Add or Remove Programs&#8221; feature</title>
		<link>https://blog.henrypoon.com/blog/2009/12/03/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature/</link>
					<comments>https://blog.henrypoon.com/blog/2009/12/03/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Thu, 03 Dec 2009 04:00:00 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[.exe]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Control Panel]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Features new to Windows XP]]></category>
		<category><![CDATA[File Explorer]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Operating systems]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[System software]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[User Account Control]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Installer]]></category>
		<category><![CDATA[Windows key]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[WoW64]]></category>
		<category><![CDATA[X86]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature</guid>

					<description><![CDATA[This article describes how to uninstall the existing 2007 Microsoft Office system if you cannot uninstall it by using the Add or Remove Programs feature (or Programs and Features in Windows Vista) in Control Panel. We recommend that you verify that you cannot uninstall by using Add or Remove Programs first. UPDATE: This set of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This article describes how to uninstall the existing 2007 Microsoft Office system if you cannot uninstall it by using the <strong>Add or Remove Programs</strong> feature (or <strong>Programs and Features</strong> in Windows Vista) in Control Panel. We recommend that you verify that you cannot uninstall by using <strong>Add or Remove Programs</strong> first.</p>



<p class="wp-block-paragraph">UPDATE: This set of instructions works for the Office 2010 Technical Preview as well.</p>



<p class="wp-block-paragraph"><strong>Based on: <a rel="noreferrer noopener" href="https://answers.microsoft.com/en-us/msoffice/forum/all/trying-to-install-office-2010-but-getting-error/4a5e022f-13f1-42bb-ad66-f6dccfd44d40" target="_blank">https://answers.microsoft.com/en-us/msoffice/forum/all/trying-to-install-office-2010-but-getting-error/4a5e022f-13f1-42bb-ad66-f6dccfd44d4</a></strong><a rel="noreferrer noopener" href="https://answers.microsoft.com/en-us/msoffice/forum/all/trying-to-install-office-2010-but-getting-error/4a5e022f-13f1-42bb-ad66-f6dccfd44d40" target="_blank">0</a></p>



<p class="wp-block-paragraph">To automatically uninstall the 2007 Microsoft Office suite, follow the steps in the following Microsoft Knowledge Base article: <a rel="noreferrer noopener" href="http://support.microsoft.com/kb/971179/" target="_blank">http://support.microsoft.com/kb/971179/</a></p>



<p class="wp-block-paragraph">How do I uninstall the 2007 Office suites if I cannot uninstall it by using the “Add or Remove Programs” feature?</p>



<p class="wp-block-paragraph">The steps provided in the &#8216;More Information&#8217; section of this article provide the details of the removal performed by the solution in 971179.</p>



<p class="wp-block-paragraph">You may find it easier to follow the steps if you print this article first.</p>



<p class="wp-block-paragraph"><strong>First, verify that you cannot uninstall the 2007 Microsoft Office system by using Add or Remove Programs (or Programs and Features)</strong></p>



<p class="wp-block-paragraph">To verify that you cannot uninstall the 2007 Microsoft Office system by using <strong>Add or Remove Programs</strong> (or <strong>Programs and Features</strong> in Windows Vista), follow these steps.</p>



<p class="wp-block-paragraph">For Windows XP or Windows Server 2003:</p>



<ol class="wp-block-list"><li>Click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type control appwiz.cpl in the <strong class="uiterm">Open</strong> box, and then press ENTER.</li><li>Click to select the 2007 Office system product from the application list, and then click <strong class="uiterm">Remove</strong>.</li></ol>



<p class="wp-block-paragraph">For Windows Vista:</p>



<ol class="wp-block-list"><li>Click <strong class="uiterm">Start</strong>, type prgrams and features in the <strong class="uiterm">Search</strong> box, and then press ENTER.</li><li>Click to select the product to be uninstalled from the listing of installed products, and then click <strong class="uiterm">Uninstall/Change</strong> from the bar that displays the available tasks.</li></ol>



<p class="wp-block-paragraph">If you were able to uninstall the 2007 Microsoft Office system by using <strong class="uiterm">Add or Remove Programs</strong>, you are finished. If you were unable to uninstall the 2007 Microsoft Office system, you may have issues with the <strong class="uiterm">Add or Remove Programs</strong> dialog box, or some 2007 Microsoft Office components may not be uninstalled. In these cases, you may be unable to reinstall the 2007 Microsoft Office system. Go to the next section to uninstall the 2007 Microsoft Office system by using an alternative method.<br><strong><br>If Add or Remove Programs does not uninstall the 2007 Microsoft Office system, use this alternative method to uninstall</strong></p>



<p class="wp-block-paragraph">Use this method only if the <strong class="uiterm">Add or Remove Programs</strong> method did not work for you. Using this method does not completely uninstall the 2007 Microsoft Office system. After you use this method, you can reinstall the 2007 Microsoft Office system.</p>



<p class="wp-block-paragraph"><strong>Note</strong> You must be logged on to Windows with a user account that is a computer administrator to complete this method. If this is your personal computer, you are likely already logged on with an administrator account. If this is a computer that is part of a network, you might have to ask the system administrator for help.</p>



<p class="wp-block-paragraph">To uninstall the existing 2007 Microsoft Office system if you cannot uninstall it by using the <strong class="uiterm">Add or Remove Programs</strong> feature, follow these steps:<br>Step 1: Remove any remaining Windows Installer packages of the 2007 Microsoft Office system:</p>



<ol class="wp-block-list"><li>Click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type installer, and then click <strong class="uiterm">OK</strong>.<br>This process opens the %windir%Installer folder.</li><li>On the <strong class="uiterm">View</strong> menu, click <strong class="uiterm">Details</strong>.<br><strong>Important</strong> To use the <strong class="uiterm">View</strong> menu in Windows Vista, you must press the ALT key first to display the menu bar, and then click the <strong class="uiterm">View</strong> menu.</li><li>On the <strong class="uiterm">View</strong> menu, click <strong class="uiterm">Choose Details</strong>.</li><li>Click to select the <strong class="uiterm">Subject</strong> check box, type 340 in the <strong class="uiterm">Width of selected column (in pixels)</strong> box, and then click <strong class="uiterm">OK</strong>.<br><strong>Note</strong> It may take several minutes for the subjects to appear next to each .msi file.</li><li>For Windows XP or Windows Server 2003, on the <strong class="uiterm">View</strong> menu, point to <strong class="uiterm">Arrange icons by</strong>, and then click <strong class="uiterm">Subject</strong>.<br>For Windows Vista, on the <strong class="uiterm">View</strong> menu, point to <strong class="uiterm">Sort By</strong>, and then click <strong class="uiterm">Subject</strong>. In Windows Vista, a <strong class="uiterm">User Account Control</strong> dialog box may be displayed with the following warning: <div class="kb_errormsgbody"><div class="kb_errorcontent"> <div class="errormsg">An unidentified program wants access to your computer</div></div></div><p>Click <strong class="uiterm">Allow</strong> when you see this warning message.</p></li><li>For each .msi file where the subject is &#8220;Microsoft Office <var>Product_Name</var> 2007,&#8221; right-click the .msi file, and then click <strong class="uiterm">Uninstall</strong>.<br><strong>Note </strong><var>Product_Name</var> is a placeholder for the name of the 2007 Microsoft Office product.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 2: Stop the Office Source Engine service:</h4>



<ol class="wp-block-list"><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type services.msc in the <strong class="uiterm">Open</strong> box, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type services.msc, and then press ENTER.</li><li>In the <strong class="uiterm">Services</strong> window, determine whether the Office Source Engine service is running. If this service is running, right-click <strong class="uiterm">Office Source Engine</strong>, and then click <strong class="uiterm">Stop</strong>.</li><li>Close the <strong class="uiterm">Services</strong> window.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 3: Remove any remaining 2007 Microsoft Office installation folders</h4>



<ol class="wp-block-list"><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %CommonProgramFiles%\Microsoft Shared in the <strong class="uiterm">Open</strong> box, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %CommonProgramFiles%\Microsoft Shared, and then press ENTER. <div class="indent"><strong>Note </strong>On a computer that is running a 64-bit version of Windows Vista, type %CommonProgramFiles(x86)%\Microsoft Shared, and then press ENTER.</div> </li><li>If the following folders are present, delete them: <ul><li>Office12</li><li>Source Engine </li></ul></li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %ProgramFiles%\Microsoft Office, and then click <strong class="uiterm">OK</strong>.<br><strong>Note</strong> On a computer that is running a 64-bit version of Windows XP, type %ProgramFiles(x86)%\Microsoft Office, and then press ENTER.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %ProgramFiles%\Microsoft Office, and then press ENTER. <div class="indent"><strong>Note</strong> On a computer that is running a 64-bit version of Windows Vista, type %ProgramFiles(x86)%\Microsoft Office, and then press ENTER.</div> </li><li>On the root folder of each hard disk drive, locate and then open the MSOCache folder. If you cannot see the MSOCache folder, follow these steps: <ol><li>Open Windows Explorer, and then on the <strong class="uiterm">Tools</strong> menu click <strong class="uiterm">Folder Options</strong>.</li><li>Click the <strong class="uiterm">View</strong> tab.</li><li>In the Advanced settings pane under <strong class="uiterm">Hidden files and folders</strong>, click <strong class="uiterm">Show hidden files and folders</strong>.</li><li>Click to clear the <strong class="uiterm">Hide protected operating system files</strong> check box, and then click <strong class="uiterm">OK</strong>. </li></ol></li><li>Open the <var>drive_letter</var>:\MSOCache\All Users folder, and then delete every folder that has the following text in the folder name: 0FF1CE<p><strong>Note</strong> This text contains a zero and a one for the letters &#8220;O&#8221; and &#8220;I.&#8221;</p></li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 4: Remove any remaining 2007 Microsoft Office installation files</h4>



<ol class="wp-block-list"><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click Run, type %appdata%\microsoft\templates, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %appdata%\microsoft\templates, and then press ENTER.</li><li>Delete the following files: <ul><li>Normal.dotm</li><li>Normalemail.dotm </li></ul></li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %appdata%\microsoft\document building blocks\<var>Language_ID</var>, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type <strong class="uiterm">%appdata%\microsoft\document building blocks<var>\Language ID</var></strong>, and then press ENTER.  <div class="kb_nowrapper"><strong>Notes</strong></div> <ul><li>If you cannot open this folder because the folder does not exist, go to step 6.</li><li><var>Language_ID</var> is a placeholder for the four-digit number that represents the language of the 2007 Microsoft Office system. For example, if you use the English version of the 2007 Microsoft Office system, the Language_ID value is 1033. If the Language_ID is not known, type %appdata%microsoftdocument building blocks, and then open the subfolder in that location. </li></ul></li><li>Delete the Building blocks.dotx file.</li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %temp%, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %temp%, and then press ENTER.</li><li>On the <strong class="uiterm">Edit</strong> menu, click <strong class="uiterm">Select All</strong>.</li><li>On the <strong class="uiterm">File</strong> menu, click <strong class="uiterm">Delete</strong>.</li><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type %AllUsersprofile%\Application Data\MicrosoftOfficeData, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type %AllUsersprofile%\Application DataMicrosoftOfficeData, and then press ENTER.</li><li>Delete only the Opa12.dat file.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 5: Remove the registry subkeys of the 2007 Microsoft Office system</h4>



<p class="wp-block-paragraph"><strong>Important:</strong> This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base: <a href="http://support.microsoft.com/kb/322756/" target="_blank" rel="noreferrer noopener">http://support.microsoft.com/kb/322756/</a></p>



<ol class="wp-block-list"><li>Locate and then delete the registry subkeys of the 2007 Microsoft Office system if they are present. To do this, follow these steps: <ol><li>For Windows XP and Windows Server 2003, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Run</strong>, type regedit, and then click <strong class="uiterm">OK</strong>.<br>For Windows Vista, click <strong class="uiterm">Start</strong>, click <strong class="uiterm">Start Search</strong>, type regedit, and then click <strong class="uiterm">OK</strong>.</li><li>Click the following subkey: <div class="indent">HKEY_CURRENT_USER\Software\Microsoft\Office\12.0</div> </li><li>On the <strong class="uiterm">File</strong> menu, click <strong class="uiterm">Export</strong>, type DeletedKey01, and then click <strong class="uiterm">Save</strong>.</li><li>On the <strong class="uiterm">Edit</strong> menu, click <strong class="uiterm">Delete</strong>, and then click <strong class="uiterm">Yes</strong> to confirm the deletion.</li><li>For each registry subkey in the following list, repeat steps 1a through 1d. Change the name of the exported key by one for each subkey.<br>For example, type DeletedKey02 for the second key, type DeletedKey03 for the third key, and so on.<br><strong>Note</strong> In the following registry keys, the asterisk character (*) represents one or more characters in the subkey name.<br><strong>32-bit versions of Microsoft Windows:</strong>  <ul><li>HKEY_CURRENT_USER\Software\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads\*0FF1CE}-*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*0FF1CE*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ose</li><li>HKEY_CLASSES_ROOT\Installer\Features\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Products\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Win32Assemblies\*Office12* <p><strong>64-bit versions of Microsoft Windows: </strong></p></li></ul><ul><li>HKEY_CURRENT_USER\Software\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\DeliverySourceEngineDownloads\*0FF1CE}-*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*0FF1CE*</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\*F01FEC</li><li>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ose</li><li>HKEY_CLASSES_ROOT\Installer\Features\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Products\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\UpgradeCodes\*F01FEC</li><li>HKEY_CLASSES_ROOT\Installer\Win32Assemblies\*Office12*  </li></ul></li></ol></li><li>Locate the following registry subkey: <div class="indent">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</div><p><strong>Note</strong> On a computer that is running a 64-bit version of Windows, locate the following registry subkey instead:</p><div class="indent">HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall</div> </li><li>On the <strong class="uiterm">File</strong> menu, click <strong class="uiterm">Export</strong>, type UninstallKey01, and then click <strong class="uiterm">Save</strong>.</li><li>Under the Uninstall subkey that you located in step 2, click each subkey, and then determine whether the subkey has the following value assigned to it: <ul><li><strong>Name</strong>: UninstallString</li><li><strong>Data</strong>: <var>file_name path</var>\Office Setup Controller\Setup.exe path<br><strong>Note</strong> In this example, <var>file_name</var> is a placeholder for the name of an installation program, and path is a placeholder for the file path. </li></ul></li><li>If the subkey contains the name and the data that are described in step 4, click <strong class="uiterm">Delete</strong> on the <strong class="uiterm">Edit</strong> menu. Otherwise, go to step 4.</li><li>Repeat steps 4 and 5 until you locate and then delete every subkey that matches the name and the data that are described in step 4.</li><li>Close Registry Editor.</li></ol>



<h4 class="wp-block-heading" id="tocHeadRef">Step 6: Restart the computer</h4>



<p class="wp-block-paragraph">Restart the computer. If the uninstall was successful, you are finished and can now reinstall the 2007 Microsoft Office system if you want. If the uninstall was not successful, go to the &#8220;Next Steps&#8221; section.</p>



<p class="wp-block-paragraph"><strong>Additional registry information</strong></p>



<p class="wp-block-paragraph">HKEY_CURRENT_USER\Software\Microsoft\Office\Common\UserInfo</p>



<p class="wp-block-paragraph">Shadow subkeys for Windows Server 2003 and for earlier versions of Windows Server:</p>



<p class="wp-block-paragraph">HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Office\12.0</p>



<p class="wp-block-paragraph">Shadow subkeys for Windows Server 2008:</p>



<p class="wp-block-paragraph">HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\Software</p>



<p class="wp-block-paragraph">Source: <a href="http://support.microsoft.com/default.aspx/kb/928218" target="_blank" rel="noreferrer noopener">http://support.microsoft.com/default.aspx/kb/928218</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2009/12/03/how-to-manually-uninstall-the-2007-office-system-if-you-cannot-uninstall-it-by-using-the-add-or-remove-programs-feature/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">30</post-id>	</item>
	</channel>
</rss>
