在Swift中使用C宏

在Swift中使用C宏,swift,swift3,Swift,Swift3,在myProject.pch文件中定义自己的宏 例如: #define Enable_Analytics 我想在里面的多个地方附上一些代码语句 #ifdef Enable_Analytics // Code statements which has to executed only if Enable_Analytics is defined #endif 这对于包含/删除基于宏的代码非常有用。 在Objective-C中,这是可行的,但在swift中,我得到了错误。如何在swift中使

在myProject.pch文件中定义自己的宏

例如:

#define Enable_Analytics
我想在里面的多个地方附上一些代码语句

#ifdef Enable_Analytics
  // Code statements which has to executed only if Enable_Analytics is defined
#endif
这对于包含/删除基于宏的代码非常有用。
在Objective-C中,这是可行的,但在swift中,我得到了错误。如何在swift中使用#ifdef?

您可以在大约和某种类型的文件上调用C预处理器,即使它不是C或类似C的语言。 在大多数类Unix系统上,它通常以
cpp
的形式提供。只需运行
cpp您的文件.swift
,C预处理器就会像C一样预处理文件

但是,我不知道如何使预处理器在项目文件中使用defines。因此,您可能必须在命令行上手动指定它们,如
-DMACRO\u NAME=somevalue


或者,您可以
#在每个swift文件中包含一个包含定义的文件,预处理器将插入它们。

您可以调用C预处理器处理大约和类型的文件,即使它不是C或类似C的语言。 在大多数类Unix系统上,它通常以
cpp
的形式提供。只需运行
cpp您的文件.swift
,C预处理器就会像C一样预处理文件

但是,我不知道如何使预处理器在项目文件中使用defines。因此,您可能必须在命令行上手动指定它们,如
-DMACRO\u NAME=somevalue


或者,您可以
#在每个swift文件中包含一个包含定义的文件,预处理器将插入它们。

您看过吗?@MartinR,是的,我看过了。我不想将其移动到构建设置中,因为我的项目中有太多这样的宏。如果没有其他解决办法,我会考虑的。你看了吗?@MartinR,是的,我看了。我不想将其移动到构建设置中,因为我的项目中有太多这样的宏。如果没有其他解决方案,那么我会考虑。@MartinR C也没有。#include指令是C预处理器的一部分。一种完全独立的语言。预处理器处理#include的方式与处理#defines的方式相同。@MartinR C也不这样做。#include指令是C预处理器的一部分。一种完全独立的语言。预处理器将以与#defines相同的方式处理#include。