- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
面向 C/C++ 开发人员的 Eclipse IDE
版本:2018-12 (4.10.0)构建 ID:20181214-0600
您好,有没有办法从源(.c)文件中的函数自动生成标题(.h)(并保持最新)?甚至可能是反之亦然的发电机?
例子:
测试.c
void print_val(int val) {
printf("Val: %i", val);
}
int add(int val1, int val2) {
return (val1 + val2);
}
现在我想自动生成一个头文件
foo.h
/*
* foo.h
*
* Created on: 22.02.2019
*
*/
#ifndef FOO_H_
#define FOO_H_
void print_val(int val);
int add(int val1, int val2);
#endif /* FOO_H_ */
如果我在函数声明中更改某些内容,头文件也应该自动更新(如果我想要,最好使用复选框更新什么)...
最佳答案
Eclipse 有一个函数可以从 .h
文件生成一个空的 .c
,称为“实现方法”。 Eclipse 中不存在相反的情况,并且有很好的理由。
不要误会我的意思。有时您需要更改头文件,但自动执行此操作未必是件好事。至少不是没有某种指令。例如,当你编写尾递归函数时,有一个不应公开的辅助函数是很常见的。它可能看起来像这样:
int sumArrayAux(int * array, size_t size, int currentSum) {
if(size == 0) return 0;
return sumArrayAux(array + 1, size - 1, *array);
}
int sumArray(int * array, size_t size) {
return sumArrayAux(array, size, 0);
}
通常,您不想公开第一个函数。函数 sumArray
旨在成为接口(interface)。
另一个例子是,如果你有一些数据结构,除了通过 api 之外,不应该被摆弄。你可以这样:
struct Matrix {
int * values;
size_t cols, rows;
};
还有一些功能:
void matrixMultiply(Matrix * A, Matrix * B, Matrix *destination) {
...
}
size_t numberOfColumns(Matrix * m) { return M->cols; }
size_t numberOfRows(Matrix * m) { return M->rows; }
那么您可能想要一个如下所示的 .h
:
typedef struct Matrix Matrix;
void matrixMultiply(Matrix * A, Matrix * B, Matrix *destination);
size_t numberOfColumns(Matrix * m);
size_t numberOfRows(Matrix * m);
但在其他情况下,例如,如果 numberOfX
函数不存在,则公开 Matrix
的整个结构可能更有意义。
重点是头文件应该是接口(interface),如果没有充分的理由和仔细考虑,你不应该改变接口(interface)。在最好的情况下,您应该对 .c
文件进行任何更改,而不会影响包含 .h
的任何文件。
此外,使用多个.c
文件来实现一个.h
的情况并不少见。此外,您可能定义了预处理器宏,这会使这种自动翻译变得复杂。
关于c - eclipse CDT : How to generate header file from source file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54827616/
我已经用 eclipse-cdt 很好地设置了一个项目。我不是从 eclipse 构建的,但是索引器可以工作,并且我的所有 makefile 设置都被选中,包括第三方库头文件。 然而,我想要的是能够查
我正在使用 Eclipse IDE for C/C++ Developers (Eclipse Ganymede Package - version 3.4.2)在 Windows XP 上使用 Mi
在 eclipse CDT 4.2 中,我只想包含几个文件夹作为资源。例如“/root”是创建项目“myproject”的地方。我只想包含这些文件夹并排除任何其他文件夹。 /根/A /根目录/B /根
我已经下载了最新的 Eclipse CDT 版本 (Helios),并想尝试一些 C++ 编程(很久没有这样做了)。 我试图做“Hello World”项目,但我很快就卡住了。 第一件事 - #inc
我已经离开 Eclipse CDT 一段时间了,并且被 JetBrains 优秀的 IDE 宠坏了(公司不让我拥有 Clion )。诚然,这些主要用于解释型语言,而不是编译型语言,因此评估更简单。 当
有没有办法让 Eclipse CDT 在每次构建项目时自动增加构建版本号?我可以找到 ANT 的解决方案,但我知道这仅适用于 Java 项目。 最佳答案 不,ANT 不仅适用于 Java 项目。它主要
我在 C++ Makefile 项目中使用 Eclipse CDT(Helios 版本,CDT 7.0)。由于我是 Eclipse 的新手,我想知道如何正确管理包含目录。我#include 通常没有任
我有一个包含多个项目的工作区,所有项目都可以正常编译。然而,由于未解析的包含,一些项目在编辑器中给出了很多关于未解析符号的警告。大多数是来自工作区中其他项目或第三方库的头文件。 谷歌搜索表明这是索引器
我想将我的 CDT 项目提交给 SVN。我是关于 CDT 的新手,我想知道描述该项目的文件。 相关文件似乎是: 。项目 .settings(目录) .c项目 .csettings(目录) .proje
有没有办法在eclipse CDT中为类生成模板自定义包含保护的格式?当前格式为 _H ,但我想要的是类似 ___H .并不是说我希望在我自己的项目中的不同命名空间中有同名的类,但我不想在出现这种情况
每当我从构建中排除 .h 文件并稍后重新包含它时,项目资源管理器中的 .h 文件的图标都会有一个图钉装饰。我查看了 CDT 用户指南,但它不在他们的 list of icons 上。图钉是什么意思?
使用 Eclipse CDT 7.0,在进行 headless 构建时,是否可以指定在命令行上仅构建单个构建配置? 最佳答案 我想我找到了自己问题的答案,主要是通过玩 CDT 8.0 和 indigo
有没有办法在 Eclipse 2020-03 (CDT 9.11) 中启用对 C++20 功能的支持?我的意思是摆脱不正确的语法高亮显示,例如忽略新添加的关键字,如“概念”、“要求”和 C++20 标
我在 Linux 上使用 Eclipse (galileo) 和当前版本的 CDT。而且我不能设置断点!它运行起来很有趣,调试得很好,并在 main 中停止……但是像我多年前用 CDT 那样双击左边距
我最近(实际上是今天)开始使用 Eclipse CDT for windows。创建了一个项目,将一个测试 C 文件(Hello World)添加到项目中。构建项目,出现如下错误。 Error: Pr
我有一个 chroot 环境,其中包含使用 make 构建复杂 C++ 项目所需的一切(适用于特定的 Linux 发行版)。 我想在这个项目中使用 Eclipse CDT(在 chroot 环境之外)
eclipse cdt 如何使用 TM/RSE 管理和构建远程文件??是否有使用 Windows 中的 Eclipse CDT 和 Linux 中的源代码和编译器的项目用法示例? 腾讯 最佳答案 Ta
我正在测试 Eclipse 的 CDT 包。我正在尝试用 C 编译和运行一个简单的 Hello World 程序。 #include int main(void { printf("
大家好, 我已经使用 GCC 安装了 Eclipse CDT 和 MinGW。 将 mingw\bin 添加到我的路径环境变量中。 尝试使用 HelloWorld 向导创建新的 C++ 项目时,出现构
我正在开发 CDT eclipse 插件,我正在尝试使用以下代码使用 CDT 代码获取 eclipse 项目资源管理器中存在的源文件列表,结果为空。 案例1: IFile[] files2 = Res
我是一名优秀的程序员,十分优秀!