c++ - GCC:如何自定义编译产生的警告和错误
问题描述
我的用例:
我有两个 c 语言文件:ApplicationCode.c
和UserCode.c
. 应用程序代码是由我的应用程序生成的,用户代码可供我的应用程序用户使用,他可以在其中编写自己的代码。
ApplicationCode.c
内部使用UserCode.c
并调用其方法/功能。
您可以在这里假设的一件事ApplicationCode.c
永远不会有任何错误,但可能会由 gcc 编译器生成警告。并且UserCode.c
可以同时出现错误和警告。因此,在编译代码时,我想向用户展示他的代码错误作为第一要务。如果还需要显示警告,则仅显示由他的代码生成的警告,而不是来自ApplicationCode.c
(因为我不想公开我ApplicationCode.c
的代码)。这里还有一个约束,我想在这里将返回类型警告显示为错误,为此我正在使用-Werror=return-type
参数。
所以,我正在考虑以下三种方法来做到这一点:
如果我能够禁用所有警告并仅启用在这里
-Wreturn-type
提出了一个单独的问题如果我能够仅指示 gcc(或重定向)错误消息到 stderr 并在 stdout 上休息。也在这里提出了一个单独的问题
如果我能够从文件中禁用所有警告(默认启用)并启用
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 与它链接。
推荐阅读
- vb.net - 如果仅给出了 .exe 文件的子文件夹路径,则获取该文件的完整路径
- hololens - 表面磁性水平 z 轴旋转问题
- sql - 如何获取删除记录的用户?
- azure - 使用 Azure AD 与服务器进行 React-Native 身份验证
- c++ - 数字的和和平方和-coprime
- sql - 找出每天自行车的第一次行程时长和最后一次行程时长
- java - 无法在 Java HTTP POST 请求中发送 JSON
- css - JSP 中的响应式图像
- android - 如何使用 Xamarin 渐变填充系统状态栏
- azure - 如何开始开发 Web 应用以将数据存储到 Azure 中的 CosmosDB