gpt4 book ai didi

c++ - c在c++实践中

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:15 27 4
gpt4 key购买 nike

我通常不会这样做,但我目前正在从事的项目需要几个位于 c 源文件中的函数。

extern "C" {
int words(char sentence[]);
int match(char str[], char sentence[], int n);
}

我只是想知道,将这些原型(prototype)添加到 c 中的链接函数的最佳位置在哪里?

它应该添加到 c++ 源文件(在我的例子中是 command.cpp),还是 c/c++ 头文件? (命令.h)

最佳答案

最不容易出错的方法是将声明放在一个共享的 C 和 C++ 头文件中,#ifdef extern "C"{ 只被使用由 C++ 编译器(这是 C 中的语法错误):

#ifdef __cplusplus
extern "C" {
#endif
int words(char sentence[]);
int match(char str[], char sentence[], int n);
#ifdef __cplusplus
}
#endif

我个人也喜欢为无作用域的 extern 语法预先#defining 宏的这种变体:

#ifdef __cplusplus
#define CFUN extern "C"
#else
#define CFUN
#endif

CFUN int words(char sentence[]);
CFUN int match(char str[], char sentence[], int n);

这使杂乱的#ifdef 内容保持本地化。您可以将它放在一个项目范围的头文件中,并在任何地方使用 CFUN 说明符。如果 CFUN 宏可能与现有定义发生冲突,您可能希望在其名称前加上前缀。

关于c++ - c在c++实践中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447774/

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