LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1708|回复: 9

求助:g++编译C++出错:undefined or invalid # directive 'include'

[复制链接]
发表于 2006-12-22 17:23:31 | 显示全部楼层 |阅读模式
linux环境下实现“多线程同步方法解决生产者和消费者问题”
用g++编译时报错:undefined or invalid  # directive 'include',请帮忙看看是怎么回事,谢谢。
部分代码如下:
#include <iostream.h>
#include <pthread.h>
#include <stdio.h>
using namespace std;
const unsigned short SIZE_OF_BUFFER = 20;//有界缓冲区长度
typedef struct{
     char g_buffer[SIZE_OF_BUFFER];
     int occupied;
     int  nextin;
     int  nextout;
     mutex_t  mutex;
     cond_t  more;
     cond_t  less;
}buffer_t;
buffer_t  buffer;
unsigned short ProductID = 0;//新生产出来的产品的产品号
unsigned short ConsumeID = 0;//被消耗的产品的产品号
unsigned short in = 0;//产品进缓冲区时的缓冲区下标,用于记录生产者的指针位置
unsigned short out = 0;//产品出缓冲区时的缓冲区下标,用于记录消费者的指针位置
bool g_continue = 1;//控制程序运行:1表示继续运行,0表示停止运行
void producer(buffer_t *b,char item);
char consumer(buffer_t *b);
const unsigned short PRODUCERS_COUNT=4;//生产者的个数
const unsigned short CONSUMERS_COUNT=3;//消费者的个数
const unsigned short THREADS_COUNT=PRODUCERS_COUNT+CONSUMERS_COUNT;//总线程数
HANDLE hThreads[PRODUCERS_COUNT];//各线程的handle
DWORD producerID[CONSUMERS_COUNT];//生产者线程的标识符
DWORD consumerID[THREADS_COUNT];//消费者线程的标识符
.................
................
...............
发表于 2006-12-23 11:00:14 | 显示全部楼层
  1. #include <iostream>
  2. #include <pthread.h>
  3. #include <cstdio>
  4. using namespace std;
复制代码
试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-27 15:03:57 | 显示全部楼层
谢谢,问题已解决
回复 支持 反对

使用道具 举报

发表于 2006-12-28 03:07:23 | 显示全部楼层
这是什么编程风格?瞧着很累啊!
回复 支持 反对

使用道具 举报

发表于 2006-12-31 10:31:33 | 显示全部楼层
请问,#include <cstdio> 是什么?
回复 支持 反对

使用道具 举报

发表于 2006-12-31 10:41:46 | 显示全部楼层
#include <stdio.h>

identical:

#include <stdio>
using namespace std;


#include <stdio> 是含有模板的版本
#include <stdio.h>是没有模板的版本
回复 支持 反对

使用道具 举报

发表于 2006-12-31 11:16:34 | 显示全部楼层
你是说 #include <stdio.h> 等同于 #include <stdio>  using namespace std; 么?
那么 #include <iostream>  using namespace std 与 include stdio 的异同?

谢谢!
回复 支持 反对

使用道具 举报

发表于 2006-12-31 11:35:55 | 显示全部楼层
你是说 #include <stdio.h> 等同于 #include <stdio> using namespace std; 么?

对的。

iostream  和 stdio是两个不同的库啊。  因为stdio有一些缺陷,所以c++中有了iostream。

std是个包含了c++标准库的namespace
回复 支持 反对

使用道具 举报

发表于 2006-12-31 12:38:42 | 显示全部楼层
谢谢兄弟!俺该多看书。

继续问:
#include <stdio.h> 是编译时包含的头文件
而#include <stdio> 是编译时用到的库么?
stdio 库在 linux 一般的发行版的哪个地方?还是由很多“库”组成?
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:12:24 | 显示全部楼层
也是头文件,不是库。
是C++版本的标准C头文件,与stdio.h“几乎”一样,但所有东西都包含到了std namespace中。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表