下面的代码是用Clang编译和运行的(在13、14和当前git头上进行了测试),但不是用GCC。
struct foo {
int field<0, 1, int, 3>;
};
但我不明白它在宣告什么:这个领域是什么?
int field<0, 1, int, 3>;
我可以在字段里放任何我想要的东西
如果对foo
的字段
成员没有任何类型的有效定义,这就不是有效的C
语法。
下面的代码编译并运行
我试着编译了下面的程序:
#include <iostream>
struct foo {
int field<0, 1, int, 3>;
};
int main(void){
foo x;
std::cout << x.field << std::endl;
}
用铿锵v13。arch linux上的0.1
编译器
clang++ -std=c++20 main.cc -o main
它会产生一些错误:
main.cc:9:20: error: no member named 'field' in 'foo'
std::cout << x.field << std::endl;
~ ^
1 error generated.
上述错误清楚地表明,字段
不是模板。
然后,我尝试用gcc v11编译它。2.0,它给出了语法错误
main.cc:4:7: error: expected ‘;’ at end of member declaration
4 | int field<0, 1, int, 3>;
| ^~~~~
| ;
main.cc:4:12: error: expected unqualified-id before ‘<’ token
4 | int field<0, 1, int, 3>;
这是clangv9中的某种bug。0
哪个可以做到这一点。
如果没有字段的声明,这甚至不是有效的语法:
假设字段
不是已声明的模板,则程序的格式不正确。
但我不明白它在宣告什么:这个领域是什么?
Clang AST说:
`-CXXRecordDecl 0xdb6f20 <test.cpp:1:1, line:3:1> line:1:8 struct foo definition
`-FieldDecl 0xdb7168 <line:2:3> col:7 'int'
clang AST用于具有int字段的程序;
:
`-CXXRecordDecl 0x168af90 <test2.cpp:1:1, line:3:1> line:1:8 struct foo definition
`-FieldDecl 0x168b150 <line:2:3, col:7> col:7 field 'int'
所以,看起来Clang认为有一个int
字段被声明了,但字段的名称是空的。这似乎可以通过初始化这个“未命名”字段得到证实:
foo f{0}; // compiles in Clang
第一个出现此错误的叮当版本似乎是9:https://gcc.godbolt.org/z/d386oz8v8
问题内容: Java具有格式字符串的概念,与其他语言的格式字符串非常相似。它用于诸如输出转换之类的JDK方法中。 我想知道在Java中是否有类似于C的输入转换方法? 问题答案: 看一下该站点,它解释了两种使用java中的控制台读取的方法,使用或使用System.in中的经典方法。 以下代码摘自引用的网站: - 问候。
问题内容: 如何在Java中解码使用HttpServerUtility.UrlTokenEncode在C#中编码的字符串? 问题答案: 我尝试使用(ctor接受一个参数,说明编码/解码是否是url安全的),但事实证明它的实现方式与UrlTokenEncode / Decode不同。 我最终将C#实现迁移到Java:
在C和C中都有效但具有不同语义学的语法示例是什么?换句话说,使用C和C编译器编译时产生不同输出的程序示例是什么?
我是MySQL的新手。我有以下SQL查询,并尝试转换为mysql,为表create脚本中的日期列提供默认值。 但在MySQL中不支持。获取以下错误。 错误代码:1064。您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以了解第1行“(-1),sysutcdatetime())”附近使用的正确语法 此外,我还需要以以下格式获取日期'9999-12-31 23:59:59.99999
问题内容: 我想知道C#和Java语法是否为LALR(x)?如果是,x的值是多少? 编辑: 接受了正确的答案后,我认为最好以这种方式更改Q: 是否有任何LALR(x)解析器可以解析Java(版本7)或C#(版本4)的当前版本?如果是,x的值是多少? 问题答案: 您必须先为语言指定一种特定的语法才能提出这个问题,有些语法可能是,有些语法可能没有。 也许您的意思是最近的Java规范中发布的Java语法
问题内容: 在C ++和/或Java中实现语音搜索的最有效方法是什么?通过语音搜索,我的意思是替换听起来相似的元音或辅音。这对于名字特别有用,因为有时人们的名字会有一些奇怪的拼写。 我认为替换元音和一些辅音可能是有效的。最好包含一些特殊情况,例如末尾的静音E或F和PH。最好在C ++中使用cstrings或字符串吗?将替换的值存储在内存中或在每次寻找内容时调用函数会更好吗? 问题答案: Sound