LinuxSir.cn,穿越时空的Linuxsir!

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

eclipse 中用CDT编写C++程序的一个问题!

[复制链接]
发表于 2005-8-1 13:17:17 | 显示全部楼层 |阅读模式
我在一个项目里建立了一个类:DrawBaseImage,   DrawBaseImage.h文件如下#ifndef DRAWBASEIMAGE_H
#define DRAWBASEIMAGE_H
#include<X11/Xlib.h>
#include<X11/Xutil.h>
#include<X11/Xos.h>
#include<X11/Xatom.h>

/*下面这行有问题,把这行加上那么在cxx文件里就找不到XOpenDisplay和XDisplayName函数,可是如果去掉,那么就找不到printf函数*/
#include<stdio.h>
using namespace std;

class DrawBaseImage{

private:

   static char *str;
        Display *display;
        int screen_num;
        Window win; //窗口ID
        unsigned int width, height; //窗口尺寸
        unsigned int border_width; //边界空白
        unsigned int display_width, display_height; //屏幕尺寸
        int count;
        XEvent report;
        GC gc;
        unsigned long valuemask;
        XGCValues values;
        char *display_name;
       
public:

        DrawBaseImage();
        virtual ~DrawBaseImage();
};

#endif // DRAWBASEIMAGE_H






DrawBaseImage.cxx文件如下:
#include "DrawBaseImage.h"

DrawBaseImage:rawBaseImage()
{
        /*问题在这个if语句中的XOpenDisplay和XDisplayName,printf函数因为是否包含头文     件#include<stdio.h>的问题会起冲突,请大家帮我看看,谢谢!!*/
        if((display = XOpenDisplay(display_name)) == NULL) //问题就是这个XOpenDisplay
        {
                printf ("Cannot connect to X server %s\n", XDisplayName(display_name));
                return;
        }
}
DrawBaseImage::~DrawBaseImage()
{
}

int main (int argc, char **argv)
{
       
}



请大家教教我,谢谢您的帮助!!
发表于 2005-8-1 14:59:40 | 显示全部楼层
都cxx了你就别用printf了,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-1 16:44:17 | 显示全部楼层
谢谢楼上朋友的回复,但我改用cout产生输出也是一样的问题!
还请大家给我帮助,谢谢!
回复 支持 反对

使用道具 举报

发表于 2005-8-2 20:46:44 | 显示全部楼层
using namspace std和#include <stdio.h>不是一路人,不要把它们扯到一起。
你这样试试:
#include <iostream>

std::cout << "whatever string you want to send to console " <<std::endl; //在你的例子using namespace这样的using directive都先省了吧

//另外,好像这和Eclipse和CDT没关系吧, hoho

Post by jiandaoxu
我在一个项目里建立了一个类:DrawBaseImage,   DrawBaseImage.h文件如下#ifndef DRAWBASEIMAGE_H
#define DRAWBASEIMAGE_H
#include<X11/Xlib.h>
#include<X11/Xutil.h>
#include<X11/Xos.h>
#include<X11/Xatom.h>

/*下面这行有问题,把这行加上那么在cxx文件里就找不到XOpenDisplay和XDisplayName函数,可是如果去掉,那么就找不到printf函数*/
#include<stdio.h>
using namespace std;

class DrawBaseImage{

private:

   static char *str;
        Display *display;
        int screen_num;
        Window win; //窗口ID
        unsigned int width, height; //窗口尺寸
        unsigned int border_width; //边界空白
        unsigned int display_width, display_height; //屏幕尺寸
        int count;
        XEvent report;
        GC gc;
        unsigned long valuemask;
        XGCValues values;
        char *display_name;
       
public:

        DrawBaseImage();
        virtual ~DrawBaseImage();
};

#endif // DRAWBASEIMAGE_H






DrawBaseImage.cxx文件如下:
#include "DrawBaseImage.h"

DrawBaseImage:rawBaseImage()
{
        /*问题在这个if语句中的XOpenDisplay和XDisplayName,printf函数因为是否包含头文     件#include<stdio.h>的问题会起冲突,请大家帮我看看,谢谢!!*/
        if((display = XOpenDisplay(display_name)) == NULL) //问题就是这个XOpenDisplay
        {
                printf ("Cannot connect to X server %s\n", XDisplayName(display_name));
                return;
        }
}
DrawBaseImage::~DrawBaseImage()
{
}

int main (int argc, char **argv)
{
       
}



请大家教教我,谢谢您的帮助!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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