当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 13 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求教,HelloWorld问题
帖子发表于 : 2008-03-02 14:20 
头像

注册: 2005-08-25 14:17
帖子: 88
送出感谢: 0 次
接收感谢: 0 次
t.c文件:
引用:
int main(){
g_print("abc\n");

}


因为我在/usr/include/glib-2.0/glib/gmessages.h中找到了g_print函数的声明,所以我认为在gcc的时候应当加入glib-2.0
于是我这样写了MakeFile
引用:
CC = gcc

all:

$(CC) -c t.c `pkg-config --cflags glib-2.0`

$(CC) -o t t.o `pkg-config --cflags --libs glib-2.0`

确实,这样得出了正确的结果。

于是,我又写了下边的代码
引用:

int main(){
gint i = 100;
g_print("abc:%d\n",i);

}

gint是/usr/include/glib-2.0/glib/gtypes.h中定义的,所以我认为之前写的那个Makefile文件也可以使用。
结果,make之后出现下边的错误:
引用:
gcc -c t.c `pkg-config --cflags glib-2.0`
t.c: 在函数 ‘main’ 中:
t.c:3: 错误: ‘gint’ 未声明 (在此函数内第一次使用)
t.c:3: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
t.c:3: 错误: 所在的函数内只报告一次。)
t.c:3: 错误: expected ‘;’ before ‘i’
t.c:4: 错误: ‘i’ 未声明 (在此函数内第一次使用)
make: *** [all] 错误 1


问:
1,为什么gint未声明啊?我要如何做才能使用gint?
2.我之前叙述的使用glib-2.0的思路是不是有误的?
3.什么书可以让我理清与之相关的问题?
谢谢!


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-03-03 19:49 
头像

注册: 2006-12-02 12:25
帖子: 689
送出感谢: 0 次
接收感谢: 0 次
不懂,没玩过,请教高人去吧,帮顶。


_________________
Titainium


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-03-03 20:11 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
你还没include呢...


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-03-03 20:15 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
代码:
autumncat@autumncat-host:~
$ cat a.c
#include <glib.h>

int main(){
gint i = 100;
g_print("abc:%d\n",i);

return 0;
}
Exit status: 0
autumncat@autumncat-host:~
$ gcc a.c -Wall `pkg-config --libs --cflags glib-2.0`
Exit status: 0
autumncat@autumncat-host:~
$ ./a.out
abc:100
Exit status: 0


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-03-03 20:20 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
球迷的PS1真BT :lol:


_________________
关注我的blog: ε==3


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-03-03 20:23 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
bones7456 写道:
球迷的PS1真BT :lol:


给你
代码:
autumncat@autumncat-host:~
$ cat .bashrc.d/98colorprompt
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
linux|xterm*|rxvt*|screen)
    PS1="\[\033[01;33m\]Exit status: \$?\[\033[00m\]\n"'${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;33m\]\w
\[\033[01;39m\]\$\[\033[00m\] '
    ;;
*)
    PS1="Exit status: \$?\n"'${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    ;;
esac
Exit status: 0


那个 exit status 是晨想教的
图片


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-03-03 20:27 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
哈哈,这样多占一行了哦~还是用自己这个比较土的吧:

lily@LLY:~$ echo $PS1
\[\e[01;31;44m\]\u\[\e[00;33;44m\]@\[\e[01;31;44m\]\h\[\e[00m\]:\[\e[04;34;47m\]\w\[\e[00m\]$


_________________
关注我的blog: ε==3


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-03-04 21:19 
头像

注册: 2005-08-25 14:17
帖子: 88
送出感谢: 0 次
接收感谢: 0 次
那么,为什么g_print不用include就可以,
gint就必须得include <glib.h>呢?


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-03-05 10:33 
头像

注册: 2006-12-02 12:25
帖子: 689
送出感谢: 0 次
接收感谢: 0 次
^_^,请3楼回答这个问题,偶也没有弄懂这个。


_________________
Titainium


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-03-05 11:44 

注册: 2006-08-15 20:35
帖子: 102
送出感谢: 0 次
接收感谢: 0 次
我没有在Ubuntu下验证,但我的猜测是:

gint这样的数据类型没有声明,肯定是编译不过的,所以要加include。
而g_print是个函数,函数没有声明,编译器会有缺省的“猜测”,当然这种依赖于编译器“猜测”的做法不好,正确的做法是包含相应的头文件。


_________________
我的bloghttp://www.liuzhongshu.com/
~ Tech、CodeGuitar、Design and my Life


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-03-05 12:49 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
代码:
autumncat@autumncat-host:~
$ cat > a.c
int main(){
g_print("abc\n");
return 0;
}
Exit status: 0
autumncat@autumncat-host:~
$ gcc a.c -Wall `pkg-config --libs --cflags glib-2.0`
a.c: 在函数 ‘main’ 中:
a.c:2: 警告: 隐式声明函数 ‘g_print’
Exit status: 0


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-03-06 17:53 
头像

注册: 2006-12-02 12:25
帖子: 689
送出感谢: 0 次
接收感谢: 0 次
原来C下面还有这么深沉的东西,学习了,多谢!


_________________
Titainium


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-03-06 20:50 
头像

注册: 2005-08-25 14:17
帖子: 88
送出感谢: 0 次
接收感谢: 0 次
我想10楼wenshu是正解,因为$(CC) -o t t.o `pkg-config --cflags --libs glib-2.0` 在生成t的时候,除了链接t.o, 还链接了glib的库,于是生成的t就可以隐式的调用g_print了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 13 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译