温馨提示×

linux c++配置怎么配宏

小樊
45
2026-09-29 05:50:30
栏目: 编程语言

在 Linux 下用 C++ 配置宏(Macro),常见有几种方式,下面从编译期宏定义、CMake 配置、Makefile 配置、以及条件编译示例几个方面说清楚。


一、直接在 g++ / gcc 编译时定义宏

1️⃣ 使用 -D 定义宏

g++ main.cpp -o main -DMY_MACRO

等价于代码里:

#define MY_MACRO

2️⃣ 定义带值的宏

g++ main.cpp -o main -DVERSION=2

等价于:

#define VERSION 2

3️⃣ 定义字符串宏(注意转义)

g++ main.cpp -o main -DNAME=\"linux\"

C++ 中:

#define NAME "linux"

二、在 C++ 代码中使用宏(条件编译)

#include <iostream>

int main() {
#ifdef MY_MACRO
    std::cout << "MY_MACRO enabled" << std::endl;
#endif

#if VERSION == 2
    std::cout << "Version 2" << std::endl;
#endif

    return 0;
}

三、使用 Makefile 配置宏

Makefile 示例

CXX = g++
CXXFLAGS = -Wall -DMY_MACRO -DVERSION=3

target: main.cpp
	$(CXX) main.cpp -o main $(CXXFLAGS)

运行:

make

四、使用 CMake 配置宏(推荐)

1️⃣ 基础方式

add_executable(main main.cpp)
target_compile_definitions(main PRIVATE MY_MACRO)

2️⃣ 带值宏

target_compile_definitions(main PRIVATE VERSION=2)

3️⃣ 根据选项开关宏

option(USE_FEATURE "Enable feature" ON)

if(USE_FEATURE)
    target_compile_definitions(main PRIVATE USE_FEATURE)
endif()

命令行:

cmake -DUSE_FEATURE=OFF ..

五、头文件中统一配置宏(不推荐但常见)

// config.h
#pragma once
#define MAX_SIZE 1024
//#define DEBUG_MODE
#include "config.h"

⚠️ 缺点:改宏要重新编译,不灵活


六、常见宏使用场景

场景 示例宏
调试 DEBUG
平台 LINUX / WIN32
版本 VERSION
功能开关 ENABLE_LOG
编译优化 NDEBUG

七、查看已定义宏(调试用)

g++ -dM -E - < /dev/null

如果你用的是 CMake / Makefile / 具体项目结构,可以贴出来,我可以帮你写最合适的宏配置方案。

0 踩