如何解决GCC:如何自定义编译生成的警告和错误
我的用例:
我有两个 c 语言文件: ApplicationCode.c
和 UserCode.c
。应用程序代码是由我的应用程序生成的,而 UserCode 可供我的应用程序用户使用,他可以在其中编写自己的代码。
ApplicationCode.c
在内部使用 UserCode.c
并调用其方法/函数。
您可以在这里假设 ApplicationCode.c
永远不会有任何错误,但可能会由 gcc 编译器生成警告。而 UserCode.c
可以同时包含错误和警告。
所以,在编译代码时,我想向用户展示他的代码错误作为第一要务。如果需要显示警告,则还显示由他的代码生成的警告,而不是来自 ApplicationCode.c
(因为我不想公开我的 ApplicationCode.c
的代码)。
还有一个限制是我想在此处将返回类型警告显示为错误,为此我使用了 -Werror=return-type
参数。
所以,我正在考虑以下三种方法来做到这一点:
-
如果我能够禁用所有警告并仅启用
提出了一个单独的问题-Wreturn-type
为此 here -
如果我能够指示 gcc(或重定向)仅错误消息到 stderr 并停留在 stdout 上。 为此也提出了一个单独的问题 here
-
如果我能够禁用
ApplicationCode.c
文件中的所有警告(默认情况下启用),并使用-Werror=return-type
为UserCode.c
启用所有警告
我尝试到处搜索,但没有得到以上所有 3 项的任何解决方案。请告诉我如何解决上述问题,或者是否有其他更好的方法来解决我的用例?
更新 1: 这是我的两个代码文件
应用程序代码.c
#include <stdio.h>
// some headers
// some application specific code
int testUserFunction(); // user function declaration
int main(int argc,char *a[]) {
int result = testUserFunction(); // calling user function
// some logic to use and evaluate result
}
用户代码.c
#include<stdio.h>
int testUserFunction(int input1)
{
// user will write his code below this
// user code
}
编译代码的基本命令:
gcc -o code.out ApplicationCode.c UserCode.c
解决方法
或者是否有其他更好的方法来解决我的用例?
如果你不想“暴露ApplicationCode.c”,那你为什么要首先显示它的编译输出?解决方案:在某个秘密的地方编译它,让用户将他们的 UserCode.c 与它链接起来。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。