gpt4 book ai didi

c++ - 如何将一个C实现文件拆分为多个具有单个头文件的文件

转载 作者:行者123 更新时间:2023-11-30 20:13:58 25 4
gpt4 key购买 nike

我有一个 C/C++ 应用程序,带有头文件/实现文件对。

之前:

<小时/>
// ===================================================
// Filename: "bitwise.cpp"
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> same header:
#include "bitwise.hpp"
// ===================================================

uint8_t byte_and
(uint8_t A, uint8_t B)
{
return (A & B);
}

uint16_t word_and
(uint16_t A, uint16_t B)
{
return (A & B);
}

uint32_t dword_and
(uint32_t A, uint32_t B)
{
return (A & B);
}

// other function's implementations

// ===================================================
<小时/>
// ===================================================
// Filename: "bitwise.hpp"
// ===================================================
#ifndef BITWISE__HPP
#define BITWISE__HPP
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> same header:
// ???
// ===================================================

uint8_t byte_and
(uint8_t A, uint8_t B);

uint16_t word_and
(uint16_t A, uint16_t B);

uint32_t dword_and
(uint32_t A, uint32_t B);

// other function's prototypes

// ===================================================
#endif // BITWISE__HPP
// ===================================================
<小时/>

主文件类似于:

<小时/>
// ===================================================
// Filename: "main.cpp"
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> myapp headers:
#include "bitwise.hpp"
// ===================================================

int main(int argc, char** argv)
{
int ErrorCode = 0;

// ...

uint8_t A = 7;
uint8_t B = 5;
uint8_t C = byte_and(A, B);

// ...

uint16_t A = 7;
uint16_t B = 5;
uint16_t C = word_and(A, B);

// do something else

// ...

uint32_t A = 7;
uint32_t B = 5;
uint32_t C = dword_and(A, B);

// do something else

// ...

return ErrorCode;
} // int main(...)

// ===================================================
<小时/>

由于“bitwise.cpp”太大,我想将其拆分为多个“*.cpp”文件。

并且,保留单个“bitwise.hpp”文件,并且还想要主文件,而不必包含每个具体实现的“*.cpp”文件。

之后(希望实现类似的效果):

<小时/>
// ===================================================
// Filename: "bitwise_byte.cpp"
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> same header:
#include "bitwise_byte.hpp"
// ===================================================

uint8_t byte_and
(uint8_t A, uint8_t B)
{
return (A & B);
}

// other function's implementations

// ===================================================
<小时/>
// ===================================================
// Filename: "bitwise_word.cpp"
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> same header:
#include "bitwise_word.hpp"
// ===================================================

uint16_t word_and
(uint16_t A, uint16_t B)
{
return (A & B);
}

// other function's implementations

// ===================================================
<小时/>
// ===================================================
// Filename: "bitwise_dword.cpp"
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> same header:
#include "bitwise_dword.hpp"
// ===================================================

uint32_t word_and
(uint32_t A, uint32_t B)
{
return (A & B);
}

// other function's implementations

// ===================================================
<小时/>
// ===================================================
// Filename: "bitwise.hpp"
// ===================================================
#ifndef BITWISE__HPP
#define BITWISE__HPP
// ===================================================
// --> "C" specific headers:
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
// ===================================================
// --> same header:
// ???
// ===================================================

// include smaller implementation files here (maybe):

// include "bitwise_byte.cpp" or "bitwise_byte.hpp"
// include "bitwise_word.cpp" or "bitwise_word.hpp"
// include "bitwise_dword.cpp" or "bitwise_dword.hpp"

// ===================================================
#endif // BITWISE__HPP
// ===================================================
<小时/>

我不使用命名空间、外部变量或类声明,仅使用全局函数。每个单独的实现“*.cpp”文件,独立于其他。

我希望主文件保持不变,而不必修改其中的“include”。单独的“*.cpp”文件可以更改,“*.hpp”文件也可以更改。

这可以做到吗?因为,if (CanBeDone == TRUE),怎么办?

我尝试查看以前的帖子,但没有找到答案。

[注:我的问题没做完,已经投了3票了,不解释,看起来像恶搞]

最佳答案

只需将所有函数原型(prototype)添加到 bitwise.hpp 并将其包含到需要任何函数的所有文件中即可。

关于c++ - 如何将一个C实现文件拆分为多个具有单个头文件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28246203/

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