Linux 下编译hello world 的C 语言程序
本来我用的是这样的程序
# include <iostream.h>
int main(void)
{
int i,j;
j=0;
i=j+1;
cout<<"hello world!"<<endl;
cout<<"the result is"<<i<<endl;
return 0;
}
利用g++ -o test test.cpp。但是这样是有错误的,提示无法打开iostream.h,修改成这样的程序
# include <iostream>
using namespace std;
int main(void)
{
int i,j;
j=0;
i=j+1;
cout<<"hello world!"<<endl;
cout<<"the result is"<<i<<endl;
return 0;
}
g++ -o test test.cpp 这样运行的结果是正确的。
<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
其次在Linux下编程的时候,C++ 语言程序可以保存的格式是.cc .C .cpp三者都是可以的
相关文档:
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
(1)先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。
下面是a.c的内容
ch ......
#include <stdio.h>
#include <stdlib.h>
#define SIZE 17
void reverse(int start, int end);
int data[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
int main(void)
{
int i = 5;
reverse(0, i - 1);
reverse(i, SIZE-1);
reverse(0, SIZE-1);
return ......
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8 类: 8051存储类型及存储区域l; 存储模式l存储器类型声明l变量类型声明l 位变量与位寻址l 特殊功能寄存器(SFR)l C51指针l 函数属性具体说明如下(8031为缺省CPU)。
第一节 Keil C ......
string info ="客户端IP:"+ Page.Request.UserHostAddress;
info += "<br/>用户信息:" + Page.User;
info += "<br/>服务器电脑名称:" + Page.Server.MachineName;
info += "<br/>当前用户电脑名称:" + System.Net.Dns.GetHostName();
info += "<br/>当前电脑名:" + System.Environment.Ma ......