我现在正在学习c语言,每次我们必须通过ssh登录并远程执行命令时,我的学校将所有作业都放在神话上。 因此,我想下载文件并在我自己的macbook上执行它们。但是,当我使用make命令编译文件时,我收到错误和警告,例如:
gcc -g -O0 -std=gnu99 -Wall $warnflags -m32 -c -I. vectest.c -o vectest.o
warning: unknown warning option '-Wlogical-op'; did you mean '-Wlong-long'?
vectest.c:10:10: fatal error: 'error.h' file not found
#include <error.h>”
我搜索了这些问题,但找不到满意的答案。谁能帮我解决这个问题?或者我必须使用linux机器?
答案 0 :(得分:2)
实际上;各种平台的编译器(即使它是&#34;相同的#34;编译器,如GCC)可能有不同的标志和行为。您可以使其工作 - 您可以从-Wlogical-op
中的$warnflags
删除Makefile
标记,但如果error.h
文件是系统提供的头文件,你可能遇到麻烦了。因此,我建议您下载例如VirtualBox并在其上运行Linux。
答案 1 :(得分:1)
有关此标头提供的内容,请参阅error(3)
。它不是特定于linux而是特定于 GNU C库。你可以做的是提供你自己的这些功能的最小实现,并编写自己的enter code here
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.view.JasperViewer;
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet test</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet test at " + request.getContextPath() + "
</h1>");
out.println("</body>");
out.println("</html>");
response.setHeader("Content-Disposition", "inline; filename=\"print.pdf\"");
response.setContentType("application/pdf");
String host = "jdbc:mysql://localhost:3306/youare";
String uname = "root";
String upass = "";
String user = request.getParameter("rollnum");
String userdob = request.getParameter("date_of_birth");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(host, uname, upass);
// an example date with format MM-dd-yyyy
String newDateString;
SimpleDateFormat sdf = new SimpleDateFormat("YYYY_MM_DD_DASH");
Date d = (Date) sdf.parse(userdob);
// exactly after here is useful for you
sdf.applyPattern("YYYY_MM_DD_DASH");
newDateString = sdf.format(d);
HashMap map = new HashMap();
map.put("Regno",user);
map.put("dob",newDateString);
ServletContext context = request.getServletContext();
String report = context.getRealPath("/report.jrxml");
InputStream input=new FileInputStream(new File(report));
JasperReport jr= JasperCompileManager.compileReport(input);
JasperPrint jasperPrint = JasperFillManager.fillReport(jr,map,con);
//JasperExportManager.exportReportToPdfFile(jasperPrint,"print.pdf");
JasperExportManager.exportReportToPdfStream(jasperPrint,
response.getOutputStream ());
response.getOutputStream().flush();
response.getOutputStream().close();
JasperViewer.viewReport(jasperPrint);
con.close();
}
catch (Exception ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
。
你甚至可以“#define”他们什么也不做,但是你可能会在现有代码中丢失一些错误报告。也许您可以尝试找一位老师理解问题并讨论问题......最好不要使用任何特定于平台的扩展来学习标准C 。