如何设置环境变量GUILE_WARN_DEPRECATED?

How to set the environment variable GUILE_WARN_DEPRECATED?

我在我的 C 代码中使用了 guile(版本 2.0)(在 gcc 版本 4.8.5 和 OS centos 6 中编译)。

我的 makefile 看起来像这样。

CC=gcc
CFLAGS=-Wall -march=native -O2 -pipe -ffast-math -I/usr/include/guile/2.0
LDFLAGS=-lm -lguile -lgc -lpthread -lfftw3f -llapack

.PHONY: all 

all: server mdclient_ash client

mdclient_ash: mdclient_ash.o

client: client.o mdlib.o ipp.o

mdmd: mdlib.o ${PROC_OBJS} mdmd.o ipp.o

mdmd.o: mdmd.c tsdmd.h

clean:  
    rm -rf *~ *.o sp/*.o sp/*~ pp/ff/*.o pp/fr/*~ pp/sf/*.o pp/st/*~  

pp/rte/*.o pp/rte/*.~  server mdclient_ash client 

编译过程会针对某些与诡计相关的错误发出警告,例如:

scm_int2num is deprecated (declared at /usr/include/guile/2.0/libguile/deprecated.h:667) [-Wdeprecated-declarations]

 element = scm_list_ref(retval,scm_int2num(1));

没有错误。执行我的 C 文件(主文件,即 server.c)后,出现以下错误:

Some deprecated features have been used. Set the environment variable GUILE_WARN_DEPRECATED to "detailed" and rerun the program to get more information. Set it to "no" to suppress this message.

如何以及在何处适当地设置环境变量 GUILE_WARN_DEPRECATED

你不要像server.c那样执行C文件;您将它们编译成 server 之类的程序,然后 运行 that!

由于程序是运行时会出现该信息,所以需要在运行程序时设置环境变量。我假设您使用 POSIX shell 导数,例如 bash; C shell 派生词的语法不同,例如 tcsh.

您可以使用:

  1. GUILE_WARN_DEPRECATED=detailed server 为程序的这次调用设置环境变量。

  2. export GUILE_WARN_DEPRECATED=detailed; server 设置并导出环境变量,不需要再次重置,直到您在新的 window 中启动新的 shell,或者类似的东西。

  3. export GUILE_WARN_DEPRECATED=detailed 添加到您的个人资料(~/.profile,或 ~/.bash_profile,或者 ~/.bashrc 文件)。现在,当您使用 shell.

  4. 登录或创建新的 window 时,将设置此设置

还有一些其他方法可以执行这些操作 - 它们是上述选项的微小变体。查看您的 shell 手册,了解启动时处理了哪些文件。

显然,最好停止使用已弃用的功能,所以详细的警告是最合适的设置。但是,您可能想忽略给您的警告,而不关心您的程序将来会中断,因此您会做一些愚蠢的事情并使用 GUILE_WARN_DEPRECATED=no 代替。我不能夸大那将是多么愚蠢 — 而不是 使用已弃用的函数。编辑代码并修复它以使用首选替换项。