This question already has answers here:
Difference between iostream and iostream.h
                                
                                    (3个答案)
                                
                        
                                6年前关闭。
            
                    
我需要执行此页面中的一些示例:
http://www.chuidiang.com/clinux/ipcs/colas.php

其中之一的代码是以下代码:

#include <iostream.h>
#include <sys/msg.h>
#include <errno.h>

typedef struct Mi_Tipo_Mensaje
{
long Id_Mensaje;
int Dato_Numerico;
char Mensaje[10];
};

main()
{
key_t Clave1;
int Id_Cola_Mensajes;
Mi_Tipo_Mensaje Un_Mensaje;

Clave1 = ftok ("/bin/ls", 33);
if (Clave1 == (key_t)-1)
{
    cout << "Error al obtener clave para cola mensajes" << endl;
    exit(-1);
}

Id_Cola_Mensajes = msgget (Clave1, 0600 | IPC_CREAT);
if (Id_Cola_Mensajes == -1)
{
    cout << "Error al obtener identificador para cola mensajes" << endl;
    exit (-1);
}

Un_Mensaje.Id_Mensaje = 1;
Un_Mensaje.Dato_Numerico = 29;
strcpy (Un_Mensaje.Mensaje, "Hola");

msgsnd (Id_Cola_Mensajes, (struct msgbuf *)&Un_Mensaje,
        sizeof(Un_Mensaje.Dato_Numerico)+sizeof(Un_Mensaje.Mensaje),
        IPC_NOWAIT);

msgrcv (Id_Cola_Mensajes, (struct msgbuf *)&Un_Mensaje,
        sizeof(Un_Mensaje.Dato_Numerico) + sizeof(Un_Mensaje.Mensaje),
        2, 0);

cout << "Recibido mensaje tipo 2" << endl;
cout << "Dato_Numerico = " << Un_Mensaje.Dato_Numerico << endl;
cout << "Mensaje = " << Un_Mensaje.Mensaje << endl;

msgctl (Id_Cola_Mensajes, IPC_RMID, (struct msqid_ds *)NULL);
    }


我正在尝试按照我提到的页面中的建议进行编译(“ make”或“ g ++ cola1.c -o cola1”),但我收到此消息:

fatal error: iostream.h: No such file or directory


我知道这个问题已经问了很多,但是我还不能解决,请您给我一些见解?
谢谢您的时间和安排,

塞巴斯蒂安·帕维兹(SebastiánPavez)

最佳答案

您的代码中有很多问题。


iostream.h不是C ++标准的一部分,而应该导入iostream
永远不要将std名称空间添加到适当的函数中。您只需在程序的开头添加using namespace std;行(尽管不建议这样做,请查看您最喜欢的参考,std名称空间中存在哪些函数,并在它们前面加上std::)。
普通main()是错误的,它必须返回int。将其更改为int main(),并在main函数的末尾添加行return 0。正如Joachim Pileborg在评论中所建议的那样,您可以省略return语句,因为如果缺少它,编译器会添加它。
您使用在头文件cstringstrcpy)和cstdlibexit)中声明的函数,因此包括它们:

#include <cstring>
#include <cstdlib>

typedef行中的typedef struct Mi_Tipo_Mensaje是多余的,不是必需的。去掉它。


顺便说一句:代码中的许多内容表明您正在编写的是C ++程序,而不是C程序。

关于c++ - C++程序上的iostream.h问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16308179/

10-13 05:02