我可能在GCC中发现了一个bug。我在网上找不到任何与此相关的东西,所以我想知道有没有人以前见过这个。
我正在使用“Ubuntu 16.04.0 LTS”和:gcc version 5.4.0 201 60609(Ubuntu 5.4.0-6Ubuntu1~16.04.6)
,但是这个问题也可以在以后的gcc版本gcc-6和GCC-7上重现。
在https://github.com/mihaipop11/gcc-linux中,您可以找到包含所有源代码的github repo的链接,但我也将在下面解释这一点。
如何复制:
我们有一个包含这些文件的小程序:
// main.cpp
#include <iostream>
#include INCLUDE_FILE
int main()
{
std::cout << "Works this time" << std::endl;
}
和文件夹中的头文件(假设名为include
),如果是空的也没关系,这只是为了演示的目的。
// include.hpp
//empty header
总体结构如下所示:
<dir>
├── main.cpp
└── include
└── include.hpp
编译步骤:
总体结构如下所示:
test-notlinux
├── main.cpp
└── include
└── include.hpp
现在,cd test-notlinux
并尝试编译源代码:
g++ "-D INCLUDE_FILE=\"${PWD}/include/include.hpp\"" main.cpp
g++ "-D INCLUDE_FILE=<${PWD}/include/include.hpp>" main.cpp
结果:两个命令都能正常工作。这里没问题。
第二种情况:存放文件的
linux
。例如:
test-linux
总体结构如下所示:
test-linux
├── main.cpp
└── include
└── include.hpp
现在,cd test-linux
并尝试编译源代码:
// first command should work
g++ "-D INCLUDE_FILE=\"${PWD}/include/include.hpp\"" main.cpp
// but this ...
g++ "-D INCLUDE_FILE=<${PWD}/include/include.hpp>" main.cpp
首先,linux
是为1
定义的宏。在<>情况下,宏是展开的,而在“”情况下,标记是字符串。
第二件事是linux
是仅在使用GNU扩展时定义的,因此只需使用-std=C++{98,11,14,17,2a}
或-ansi
进行编译,就不会定义它(只有__linux__
、__linux
和__gnu_linux__
)。
我可能在GCC中发现了一个bug。我在网上找不到任何与此相关的东西,所以我想知道是否有人以前见过这个。 我使用的“Ubuntu 16.04.0 LTS”是:,但是这个问题也会在更高的gcc版本gcc-6和GCC-7上出现。 在https://github.com/mihaipop11/gcc-linux中,您可以找到一个链接,链接到包含所有源代码的github repo。 如何繁殖: 我们有一个很
问题内容: 我有一个包含标记的字符串列表。 令牌是: {ARG:token_name}。 我也有标记的哈希图,其中key是标记,value是我要用来替换标记的值。 当我使用“ replaceAll”方法时,出现错误: java.util.regex.PatternSyntaxException:非法重复 我的代码是这样的: 并且valueFromHashMap包含{和}。 我将此哈希图作为参数。
如何删除字符串中任意位置的圆括号?
两行的一个例子是:([a,b,c],d)和([d,e],a)我想把这些行转换成([a,b,c],[d,e])和([d,e],[a,b,c]) dataframe的列名是“src”和“dst”。 我如何处理这个问题?
本文向大家介绍使用JS正则表达式 替换括号,尖括号等,包括了使用JS正则表达式 替换括号,尖括号等的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇使用JS正则表达式 替换括号,尖括号等就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
问题内容: 我是bash脚本的新手,但我不理解为什么它不起作用 第3行的替代替换错误 问题答案: 该替换在Bash 4.2.8中正常工作(并且根据文档看起来还不错)。 我最好的猜测是您实际上并没有使用Bash-您如何调用脚本?如果您正在执行此操作,则可能会与Dash或类似的程序一起运行(Dash确实在第3行给出了替换错误)。尝试使用Bash()显式运行它。 如果事实证明您实际上是在使用Dash,这