当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题] !LIBRARY
帖子发表于 : 2007-12-29 16:48 
头像

注册: 2007-10-24 1:37
帖子: 34
送出感谢: 0 次
接收感谢: 0 次
今天看到一段程序 里面有这样一段
就在main的开头
#if !LIBRARY
#include "includes.h"
#include <sys/ioctl.h>
#include <termios.h>

我的疑问是1. #if !LIBRARY 到底是什么意思 我们一般都不会加感叹号的 .
2.我不知道他在那里定义的LIBRARY.
请高手指点


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-12-29 18:45 
头像

注册: 2005-08-25 13:58
帖子: 808
地址: ustc
送出感谢: 0 次
接收感谢: 0 次
条件预处理:
LIBRARY 是一个宏定义
如果没定义 LIBRARY, !LIBRARY = true
如果 LIBRARY = 0, !LIBRARY = true
如果 LIBRARY !=0, !LIBRARY = false


_________________
爱喝真猪奶茶的夜鸣猪


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-12-29 20:26 

注册: 2007-09-05 1:09
帖子: 156
地址: beijing
送出感谢: 0 次
接收感谢: 0 次
就是条件判断


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-12-29 21:15 
头像

注册: 2007-10-24 1:37
帖子: 34
送出感谢: 0 次
接收感谢: 0 次
谢谢 nobrain 我还想知道的是这个宏是在那里定义的 应该是project 里面的某个文件里面吗?


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-12-29 21:17 
头像

注册: 2007-10-24 1:37
帖子: 34
送出感谢: 0 次
接收感谢: 0 次
或者是在他引用的其他文件里面定义的


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-12-29 22:16 
头像

注册: 2005-08-25 13:58
帖子: 808
地址: ustc
送出感谢: 0 次
接收感谢: 0 次
这个宏不一定要在文件里定义。一般条件预处理相关的宏在 Makefile 里定义,来控制编译不同的版本

gcc 的 -D 参数后面就可以指定要定义的宏


_________________
爱喝真猪奶茶的夜鸣猪


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-12-31 6:56 
头像

注册: 2007-10-24 1:37
帖子: 34
送出感谢: 0 次
接收感谢: 0 次
nobrain 写道:
这个宏不一定要在文件里定义。一般条件预处理相关的宏在 Makefile 里定义,来控制编译不同的版本

gcc 的 -D 参数后面就可以指定要定义的宏



:cry: 我检查了makefile 里的定义 真的没有 #define LIBRARY 之类的语句

makefile 如下:

# Makefile for compiling, testing, and installing Mathomatic under any UNIX like OS.
# Currently uses gcc only options in CFLAGS, just remove them for other C compilers.

VERSION = `cat VERSION`
CFLAGS += -Wuninitialized -Wshadow -Wformat -Wparentheses -Wcast-align # gcc specific flags
CFLAGS += -O -DUNIX -DVERSION="$(VERSION)" # general cc flags
LDFLAGS += # The default linker flags.
LIBS += -lm # The default libraries to link.

# "make READLINE=1" to include readline support:
CFLAGS += $(READLINE:1=-DREADLINE)
LIBS += $(READLINE:1=-lreadline -lncurses)

# Install directories:
prefix ?= /usr/local
bindir ?= $(prefix)/bin
mandir ?= $(prefix)/man
docdir ?= $(prefix)/share/doc

DOC = doc/mathomatic.1.html doc/matho-primes.1.html doc/matho-pascal.1.html doc/matho-sumsq.1.html
AOUT = mathomatic # The name of the executable to create.

OBJECTS = main.o globals.o am.o solve.o help.o parse.o cmds.o simplify.o \
factor.o super.o unfactor.o poly.o diff.o integrate.o \
complex.o complex_lib.o list.o 囗囗囗.o factor_int.o

MAN1 = mathomatic.1
DOCS = VERSION AUTHORS COPYING README.txt changes.txt mathomatic.ico

all: $(AOUT) $(DOC) # make these by default
@echo Make completed.

doc: $(DOC)

check test:
@echo Testing Mathomatic...
@cd tests && time ../$(AOUT) -t all 0<&- >test.out && diff -u all.out test.out
@rm tests/test.out
@echo All tests passed.

baseline:
@cd tests && ../$(AOUT) -t all 0<&- >all.out
@rm -f tests/test.out
@echo File tests/all.out updated with current test output.

$(OBJECTS): includes.h am.h externs.h complex.h proto.h VERSION

$(AOUT): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $(AOUT)

# Here we convert the man pages to HTML docs:
doc/mathomatic.1.html: mathomatic.1
rman -f HTML mathomatic.1 >doc/mathomatic.1.html

doc/matho-primes.1.html: primes/matho-primes.1
rman -f HTML primes/matho-primes.1 >doc/matho-primes.1.html

doc/matho-pascal.1.html: primes/matho-pascal.1
rman -f HTML primes/matho-pascal.1 >doc/matho-pascal.1.html

doc/matho-sumsq.1.html: primes/matho-sumsq.1
rman -f HTML primes/matho-sumsq.1 >doc/matho-sumsq.1.html

install:
install -d $(bindir)
install -d $(mandir)/man1
install -d $(docdir)/mathomatic
install -d $(docdir)/mathomatic/html
install -d $(docdir)/mathomatic/m4
install -d $(docdir)/mathomatic/tests
install -d $(docdir)/mathomatic/factorial
install -d $(prefix)/share/applications
install -d $(prefix)/share/pixmaps
install -m 0755 $(AOUT) $(bindir)
install -m 0644 $(MAN1) $(mandir)/man1
install -m 0644 $(DOCS) $(docdir)/mathomatic
install -m 0644 doc/* $(docdir)/mathomatic/html
install -m 0644 m4/* $(docdir)/mathomatic/m4
install -m 0644 tests/* $(docdir)/mathomatic/tests
install -m 0644 factorial/* $(docdir)/mathomatic/factorial
install -m 0644 mathomatic.desktop $(prefix)/share/applications
install -m 0644 mathomatic.png $(prefix)/share/pixmaps
@echo Install completed.

uninstall:
rm -f $(bindir)/$(AOUT)
cd $(mandir)/man1 && rm -f $(MAN1)
rm -rf $(docdir)/mathomatic
rm -f $(prefix)/share/applications/mathomatic.desktop
rm -f $(prefix)/share/pixmaps/mathomatic.png
@echo Uninstall completed.

clean:
rm -f *.o *.a
rm -f lib/*.o lib/*.a

flush: clean
rm -f $(AOUT)
rm -f mathomatic_secure


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-12-31 7:06 
头像

注册: 2007-10-24 1:37
帖子: 34
送出感谢: 0 次
接收感谢: 0 次
请问 是不是还有什么别的地方可能定义它的呢 真的是麻烦 nobrain 了 我大致找了一下其他的文件 好像没有
奇怪这个 没有定义是如何能编译通过的???


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-12-31 21:16 
头像

注册: 2005-08-25 13:58
帖子: 808
地址: ustc
送出感谢: 0 次
接收感谢: 0 次
!LIBRARY 可以为真也可以为假,影响预处理的结果。不一定非要定义 LIBRARY


_________________
爱喝真猪奶茶的夜鸣猪


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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