- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
giống [5.3.3/3] 所述(expr.sizeof,工作草案):
The sizeof operator can be applied to a pointer to a function, but shall not be applied directly to a function.
以下最小的工作示例可以正常编译:
void f() { }
int chính() {
sizeof(&f);
}
我希望下面的那个也能工作:
mẫu
void f() { }
int chính() {
sizeof(&f);
}
无论如何,即使它用 clang (v3.8) 编译,它也不使用 GCC (v6.1)。
错误是:
error: address of overloaded function with no contextual type information
我怀疑是GCC的bug(如果确定我会开工票)
我是对的还是我在这里遗漏了一些东西,而 GCC 确实是对的?
与此同时,我打开了 an issue到海湾合作委员会。
câu trả lời hay nhất
这是一个错误。以下代码编译正常:
mẫu
void f() { }
int chính() {
auto fptr = &f;
return sizeof(fptr);
}
请注意,起初我没有仔细阅读问题。我的印象是函数 f
确实重载了,例如:
mẫu
void f() { }
mẫu
void f(T) { }
int chính() {
sizeof(&f);
}
在这样的阅读问题下,我准备了以下答案,我仍然想与社区分享:
我不会将其定性为错误。
将其定性为错误的论点如下 - 所有函数指针都具有相同的大小,那么为什么 kích thước của
中的函数很重要呢?运营商?
我要打败那个论点。
首先,它是从错误的前提出发的。 C++ 标准只保证
converting a prvalue of type “pointer to
T1
” to the type “pointer toT2
” (whereT1
VàT2
are function types) and back to its original type yields the original pointer value
这并不一定意味着指向不同类型函数的指针的大小是相同的。然而,我承认在实践中这是真的。
接下来,即使我们接受了论证背后的前提和逻辑,那么我们也必须接受下面的程序也应该毫无问题地编译的说法:
mẫu
void f() { }
mẫu
void f(T) { }
int chính() {
auto fptr = &f;
return sizeof(fptr);
// fptr is not used anywhere else, so the compiler must not
// whine about the ambiguity on its declaration line
}
继续以这种方式,我们认为,只要后续代码消除了编译歧义,就不应报告编译歧义。
关于c++ - sizeof 和函数模板 : sizeof(&f) vs sizeof(&f
这个问题已经有答案了: Why isn't sizeof for a struct equal to the sum of sizeof of each member? (13 个回答) 已关闭 8
先生。 Stroustrup 在他的新书(TCPL 第 4 版)第 149 页写下了以下内容 1 N && sizeof(long)<=N任何 N 值的实现,更不用说任何人都会考虑使用 wchar_t
如 [5.3.3/3] 所述(expr.sizeof,工作草案): The sizeof operator can be applied to a pointer to a function, but
从C标准来看,int至少有16bit,long至少有32bit,long long如果有的话至少有64bit(有些平台可能不支持)。只是想知道标题中的句子是否总是正确的。 最佳答案 没有。该标准仅定义
我运行的是 Windows 7(64 位)。 这个问题与此处找到的问题相同: long on a 64 bit machine 但更深入,因为它处理更多的数据类型并适用到 C 或 C++,而不是 C#
đóng cửa. Câu hỏi này dựa trên ý kiến. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Cập nhật câu hỏi để việc chỉnh sửa bài đăng này có thể trả lời nó bằng các sự kiện và trích dẫn. Đã đóng 8 năm trước. Cải thiện điều này
这个问题在这里已经有了答案: Length of array in function argument (9 个回答) 关闭 9 年前。 #include void printS(char []);
我承认这三个都有不同的含义。但是,我不明白这些具体情况适用于哪些特定情况。任何人都可以分享每个例子吗?谢谢。 malloc(sizeof(int)) malloc(size
To avoid things quietly breaking if you change the array size, I suggest std::copy(a, a + sizeof(a)/
我在 python 中注意到以下事实: >>> (1, 2, 3).__sizeof__() 48 >>> [1, 2, 3].__sizeof__() 64 我理解列表和元组之间的区别,但我希望它们
是否存在与指针大小相同的整数类型?保证所有微架构? 最佳答案 根据 this Wikipedia page ,在 C99 中,您的 stdint.h header 可能声明了 intptr_t 和 u
我注意到 int 和 double 的大小与使用函数 MPI_Type_size(MPI_INT, &MPI_INT_SIZE); 计算的不同。这是否意味着 sizeof(MPI_INT) 返回了错误
这个问题已经有答案了: How to find the size of an array (from a pointer pointing to the first element array)? (
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
Tôi là một lập trình viên xuất sắc, rất giỏi!