|
这是摘录自skyeye中一段代码,在/skyeye-insight/tcl/unix/configure.in中
:
:
170 #--------------------------------------------------------------------
171 # On some systems strstr is broken: it returns a pointer even
172 # even if the original string is empty.
173 #--------------------------------------------------------------------
174
175 AC_MSG_CHECKING([proper strstr implementation])
176 AC_TRY_RUN([
177 extern int strstr();
178 int main()
179 {
180 exit(strstr("\0test", "test") ? 1 : 0);
181 }
182 ], tcl_ok=yes, tcl_ok=no, tcl_ok=no)
183 if test $tcl_ok = yes; then
184 AC_MSG_RESULT(yes)
185 else
186 AC_MSG_RESULT([broken, using substitute])
187 LIBOBJS="$LIBOBJS strstr.o"
188 fi
:
:
可以在shell程序中嵌入C代码(实际上是C程序),这个技术我从来没有用过,请大虾讲解一下如何应用,主要有几个问题:
1: 这段代码中的AC_TRY_RUN如何定义?
2: 如何\告诉系统应该使用哪个编译器进行编译嵌入的代码?
3: AC_TRY_RUN([ --------- ] ----- ) 的语法结构如何?
4: 嵌入的程序出口只有1和0两个结果,后面为什么有三个算式?
5: 能否提供一个完整的可执行的嵌入C代码的shell程序样例?
多谢 |
|