【C++ 宏定义 使用】

【问题】

在MTK 方案中 tv_input.cpp中会看宏定义的判断 #ifdef CC_SOURCE_AUTO_DETECT_SUPPORT这个宏定义在哪里呢?

【解答】

我们可以搜索当前目录,可以找到这个定义

Android.mk文件中

LOCAL_CFLAGS += -DCC_SOURCE_AUTO_DETECT_SUPPORT
  • LOCAL_CFLAGS:

    LOCAL_CFLAGS 是一个变量,用于指定编译器的命令行选项。

  • -DCC_SOURCE_AUTO_DETECT_SUPPORT:
    -D 用于定义宏。这里定义了一个名为CC_SOURCE_AUTO_DETECT_SUPPORT 的宏。

Android.bp文件中

  1. 使用 cc_flags
  • 直接添加编译器标志。
cc_flags: [
        "-DCC_SOURCE_AUTO_DETECT_SUPPORT"
    ]

或者

  1. 使用 cc_preprocessor_defines
  • 明确定义预处理器宏。
cc_preprocessor_defines: [
        "CC_SOURCE_AUTO_DETECT_SUPPORT"
    ]

【示例代码】

假设你有一个 Android.mk 文件,其中包含了这样的配置:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := my_module
LOCAL_SRC_FILES := main.c
LOCAL_CFLAGS += -DCC_SOURCE_AUTO_DETECT_SUPPORT

include $(BUILD_SHARED_LIBRARY)

如何使用这个宏

在你的 C/C++ 源代码文件(如 main.c)中,你可以使用这个宏来控制某些行为。例如:

#include <stdio.h>

#ifdef CC_SOURCE_AUTO_DETECT_SUPPORT
#define AUTO_DETECT_ENABLED 1
#else
#define AUTO_DETECT_ENABLED 0
#endif

int main() {
    if (AUTO_DETECT_ENABLED) {
        printf("Auto detect support is enabled.\n");
    } else {
        printf("Auto detect support is not enabled.\n");
    }
    return 0;
}

更详细的示例

假设你有一个更复杂的项目结构,包含多个源文件和头文件,可以这样组织:

  1. Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := my_module
LOCAL_SRC_FILES := main.c helper.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_CFLAGS += -DCC_SOURCE_AUTO_DETECT_SUPPORT

include $(BUILD_SHARED_LIBRARY)

2. main.c

#include <stdio.h>
#include "helper.h"

int main() {
    if (isAutoDetectEnabled()) {
        printf("Auto detect support is enabled.\n");
    } else {
        printf("Auto detect support is not enabled.\n");
    }
    return 0;
}

3. helper.c

#include "helper.h"

int isAutoDetectEnabled() {
    #ifdef CC_SOURCE_AUTO_DETECT_SUPPORT
    return 1;
    #else
    return 0;
    #endif
}

4. helper.h

#include "helper.h"

int isAutoDetectEnabled() {
    #ifdef CC_SOURCE_AUTO_DETECT_SUPPORT
    return 1;
    #else
    return 0;
    #endif
}

总结

1.定义宏

  • Android.mk 中定义宏 CC_SOURCE_AUTO_DETECT_SUPPORT

2.使用宏

  • 在 C/C++ 源代码中使用预处理器条件编译来根据宏的存在与否进行不同的逻辑处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值