我编写了加密/解密缓冲区的函数(同一函数的两个版本 - 第一个使用 cryptopp,第二个 - 使用 openssl)。
我想做这样的事情:
#if defined OPENSSL
run_aes_openssl(...);
#elif defined CRYPTOPP
run_aes_crytopp(...);
#else
error(...);
#end
是否可以?
事情没那么简单。为了发现宏已定义,您必须包含定义该宏的标头。而且 C 没有类似“include foo.h iff it isn't”的东西;它必须存在,否则会出现编译错误。
通常,这可以通过编译前运行的脚本来解决。您的脚本会检查以下位置/usr/include
, /usr/local/include
等等,查看 OpenSSL 标头是否存在;然后它输出一个 Makefile,其中包含 CFLAGS-DHAVE_OPENSSL
。然后您的代码可以检查该宏。
这有点吵闹,为了简单起见,您可以要求用户手动编辑文件,例如用名为的东西分发你的项目user_config.h
用户应该在编译之前进行编辑,以指定他们放置 OpenSSL 的位置等等。
有一个名为 GNU Autoconf 的预设系统,其中包含一个脚本,可以检查系统中的所有内容。这有其优点和缺点;它使人们更容易下载源代码,但它很臃肿并且对您来说可能是一项艰苦的工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)