繁体   English   中英

从其他文件C ++控制文件中的编译器指令

[英]Controlling compiler directive in file from other file C++

考虑以下头文件,

    // filename : packet_types.h
    #ifndef _PACKET_TYPES_
    #define _PACKET_TYPES_

    struct Packet {
        enum Type {
           typ_ONE,
           typ_TWO, 
           typ_THREE,
        };

        static const char * STRINGS[] = { 
           "ONE",
           "TWO",
           "THREE"
        };

        const char * getText( int enum ) {
             return STRINGS[enum];
        }
    };
    #endif

由于Arduino的内存有限,我不希望在包含此文件packet_types.h时包含这部分代码,

        static const char * STRINGS[] = { 
           "ONE",
           "TWO",
           "THREE"
        };

        const char * getText( int enum ) {
             return STRINGS[enum];
        }

但对于我的GUI应用程序,我想要完整的文件。 我想为Arduino和GUI使用相同的文件,但是当我从其他文件(main.cpp)中包含此文件时,如何添加编译器指令#define,#ifdef,#ifnf ...来完成这项工作。 谢谢。

虽然可以使用一些预处理器杂耍,但正确的解决方案是简单地使用C ++,因为它本打算使用。 只在头文件中声明这些类成员和方法:

    static const char * STRINGS[];

    const char * getText( int enum );

然后在其中一个源文件中定义它们:

    const char * Packet::STRINGS[] = { 
       "ONE",
       "TWO",
       "THREE"
    };

    const char * Packet::getText( int enum ) {
         return STRINGS[enum];
    }

通过前面提到的预处理器杂耍,它最终完成的所有内容都是相同的逻辑结果,但是以更加混乱和迂回的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM