【发布时间】:2021-05-09 14:45:50
【问题描述】:
我的用例:
我有两个 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: 这是我的两个代码文件的样子
ApplicationCode.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
【问题讨论】:
-
回复。
"As i don't want to expose my ApplicationCode.c's code"——但他们正在编译它。如果他们没有可用的文件,他们是如何做到的? -
@G.M.请检查更新
标签: c++ c gcc return-type gcc-warning