Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
constexpr:constexpr 成员的定义和声明
如果我想使用一些方便的东西 比如make array我没有机会先声明我的数组 然后再像 早期 时间那样进行定义 因为我的 var 的类型在定义之前不可用 所以我找到了这个答案 对 static constexpr char 的未定义引用 在
c
static
languagelawyer
constexpr
标准引用:对“vector::operator[]”的超出范围调用是否会调用未定义的行为?
考虑 include
c
C11
languagelawyer
动态数组的惯用初始化是否会调用未定义的行为?
这个问题可能有点争议 我在块范围内有以下代码 int a malloc 3 sizeof int if a error handling a 0 0 a 1 1 a 2 2 我认为这段代码调用了UB由于指针算术超出范围 原因是 有效型对象指
Arrays
c
languagelawyer
dynamicmemoryallocation
undefinedbehavior
main函数可以重载吗?
两个有效版本main 存在于C int main version 1 int main int argc char argv version 2 但两种过载不能同时共存 为什么不 潜在用例 从终端运行程序时 如果没有传递参数 则调用第一个版
c
languagelawyer
overloading
programentrypoint
具有空初始化的对象的生命周期
当前的标准草案说 以前的标准有类似的措辞 基本生活 1 对象或引用的生命周期是其运行时属性 对象或参考 一个物体被称为非空的 初始化 如果它是类或聚合类型 并且它或其中之一 它的子对象是由一个构造函数而不是一个简单的构造函数初始化的 默认构
c
languagelawyer
C17
objectlifetime
显式转换函数、直接初始化和转换构造函数
后标准草案 n3376 有一个使用显式转换函数到用户定义类型的示例 12 3 2 2 class Y struct Z explicit operator Y const void h Z z Y y1 z OK direct initia
c
C11
initialization
typeconversion
languagelawyer
为什么调用 main 函数被认为是未定义的行为 (UB)
我担心这又是一个关于解释 ISO IEC 14882 C 标准 的问题 但是 正在呼叫main从程序中 例如我的使命main 递归地从main至少不是实现定义的行为 更新 我的意思是稍后格式不正确 未定义实现 也不是 UB 请参见下文并回答
c
languagelawyer
C20
将锁定的 std::unique_lock 移交给新线程
考虑下面的例子 我创建了一个std mutex 锁定它 然后将锁交给另一个线程 include
c
visualstudio2015
c14
languagelawyer
mutex
C++11 之前的初始值设定项列表中同一变量的多个突变是否为未定义行为
考虑以下代码 int main int count 0 int arrInt 2 count count return 0 如果我们使用以下命令编译代码clang std c 03它会产生以下警告 活生生的例子 warning multip
c
languagelawyer
undefinedbehavior
initializerlist
这里如何使用不完整的类型作为向量的模板参数?
直到以下程序是合法的以及诸如此类的 include
c
C11
languagelawyer
“使用”类范围的类型别名:[何时]方法中的用法可以在类型别名之前?
昨天 当我能够编译具有使用以下方法的代码时 我感到 愉快地 惊讶 使用类型别名即使别名的声明直到稍后才在类定义中声明 类型别名的这种 前向 用法是否有效 我认为是这样 因为 Clang 5 和 GCC 4 9 都是这样工作的 什么规则涵盖了
c
languagelawyer
typealias
通过在作为另一个结构而不是第一个成员的子集的一个结构之间转换指针来实现 C 中的继承是否合法?
现在我知道我可以通过将指针强制转换为struct到这个的第一个成员的类型struct 然而 纯粹作为一种学习经历 我开始想知道是否可以以稍微不同的方式实现继承 这段代码合法吗 include
为什么 `int ;` 在 C 中编译得很好,但在 C++ 中却不行?
考虑以下程序 参见现场演示here include
c
gcc
languagelawyer
variabledeclaration
隐式删除默认构造函数与编译器不合成默认构造函数相同
我正在学习 C 中的类 我才知道在某些情况可以隐式删除默认构造函数 另外 我读到 当我们有用户定义的构造函数时 编译器将不会自动合成默认构造函数 以我目前的理解 隐式删除默认构造函数与默认构造函数不自动合成时的情况有很大不同 我的意思是 在
c
languagelawyer
defaultconstructor
Haskell 中的“块”粒度是如何定义的?
我注意到这在 Haskell 中是不合法的 foo a gt a foo bar 3 foo x xs x foo xs 然而 这是 foo a gt a bar 3 foo foo x xs x foo xs 尽管与函数匹配的模式必须全部
Haskell
languagelawyer
为什么枚举常量没有链接?
我试图理解的联系enumeration constants并且在标准中找不到明确的答案N1570 6 2 2 p6 以下标识符没有链接 声明为的标识符 是对象或函数以外的任何东西 声明的标识符 作为函数参数 对象的块作用域标识符 声明时不带
c
enums
languagelawyer
extern
是否可以在未计算的上下文中从 STD 形成指向不可寻址函数的指针?
如中所述命名空间 std 6 让 F 表示标准库函数 除非 F 被指定为可寻址函数 否则如果 C 程序显式或隐式尝试形成指向 F 的指针 则其行为是未指定的 可能是格式错误的 这对于以下程序意味着 include
c
languagelawyer
functionpointers
非静态非引用数据成员声明是变量吗?
我想根据以下答案和附加讨论重新提出问题 为什么非静态数据成员引用不是变量 类的非静态数据成员本身不会创建新变量 它只是帮助您定义类的属性 如果它确实创建了一个新变量 您就可以编写如下代码 class Chamber public int p
c
languagelawyer
为什么是“使用命名空间 X;”不允许在类/结构级别?
class C using namespace std error namespace N using namespace std ok int main using namespace std ok 我想知道其背后的动机 我不太清楚 但我
c
namespaces
Using
languagelawyer
在 for 中声明结构?
Apple LLVM 9 1 0 与 clang 902 0 39 2 使用 std c11 接受 typedef struct int i float f S for S s 0 0 s i lt 25 s i s f i 10 f 但拒
c
forloop
struct
Clang
languagelawyer
«
1 ...
30
31
32
33
34
35
36
...40
»