我给出了一个应该在GNU/Linux下编译的项目。正如您可能已经猜到的,项目中的所有头都使用反斜杠符号\
。
我知道,反斜杠是未定义行为,但我需要编译它。我很确定有一种方法可以让GCC处理这个问题,因为MinGW版本可以很好地处理反斜杠(我刚刚检查了这个)。
最有趣的是,该项目是一个用于GNU/Linux的应用程序(用于ARM架构),而且ARM GCC可能工作得很好。我是唯一一个在本地使用GNU/Linux并希望将桌面应用程序编译成有一个更容易的调试生活的人。
将反斜杠替换为斜杠,并迫使同事们重新学习使用其他字符不是办法:我只是一个初级学生,但一位已经在这里工作了4-7年的同事,他们就是听不到我的话。所以,我们开始..。
发布于 2014-07-10 11:36:37
没有什么是sed不能修复的:)
sed -i '/#include/s/\\/\//g' *.c *.h
发布于 2014-07-10 10:59:02
用斜杠替换反斜杠。告诉你的同事看看这个堆叠溢出的帖子。
我写C代码已经超过24年了。反斜杠只是普通的错误的。如果它是重要的(事实上,它并不重要,因为Windows乐于使用正斜杠作为路径分隔符(如果与它们一起出现),则由C编译器来转换它们。
发布于 2014-07-10 11:33:12
GCC一点也不关心<
和>
在#include
指令中的区别。它只是把所有的东西都传递给操作系统。如果您的操作系统找到了它,那么GCC将处理它。如果你在你的Linux目录中创建一个名为foo\bar.h
的文件(你可以),在你的源代码中创建一个名为#include "foo\bar.h"
的文件,它就会被找到。
你可以告诉你的同事推开他们的傲慢,修正他们的错误代码。
https://stackoverflow.com/questions/24674615
复制相似问题