gpt4 book ai didi

c - gcc 检查文件是否是主文件 (#if __BASE_FILE__ == __FILE__)

转载 作者:行者123 更新时间:2023-12-01 12:31:35 24 4
gpt4 key购买 nike

在 ruby​​ 中有一个非常常见的习惯用法来检查当前文件是否是“主”文件:

  if __FILE__ == $0
# do something here (usually run unit tests)
end

我想在阅读 gcc 文档后在 C 中做一些类似的事情我认为它应该像这样工作:

  #if __FILE__ == __BASE_FILE__
// Do stuff
#endif

唯一的问题是在我尝试这个之后:

$ gcc src/bitmap_index.c -std=c99 -lm && ./a.out 
src/bitmap_index.c:173:1: error: token ""src/bitmap_index.c"" is not valid in preprocessor expressions

我使用的#if 错了吗?

作为 future 客人的总结:

  • 不能使用#if 比较字符串
  • BASE_FILE 是正在编译的文件的名称(这实际上是我想要的)。
  • 最好的方法是在编译期间使用 -D 设置标志

最佳答案

在 gcc 中你可以使用:

#if __INCLUDE_LEVEL__ == 0

或:

如果(!__INCLUDE_LEVEL__)

检查你是否在 __BASE_FILE__ 中

关于c - gcc 检查文件是否是主文件 (#if __BASE_FILE__ == __FILE__),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com