- Tìm số 0 đầu tiên trong một mảng bit
- Unix Hiển thị thông tin về các tập tin khớp với một trong hai mẫu
- Biểu thức chính quy thay thế nhiều tệp
- Ẩn lệnh từ xtrace
gcc 4.4.4 c89
在使用结构体隐藏实现文件中的元素时,我总是这样做。
port.h头文件
struct port_tag;
struct port_tag* open_ports(size_t port_id);
void close_ports(struct port_tag *port);
port.c实现文件
#include "port.h"
typedef struct port_tag {
size_t port_id;
} port_t;
port_t* open_ports(size_t port_id)
{
port_t *port = malloc(sizeof *port);
if(port == NULL) {
return NULL;
}
port->port_id = port_id;
cổng trả về;
}
void close_ports(port_t *port)
{
if(port != NULL) {
free(port);
}
}
driver.c驱动文件
#include "port.h"
int main(void)
{
size_t i = 0;
struct port_tag *port = NULL;
for(i = 0; i < 5; i++) {
port = open_ports(i);
if(port == NULL) {
fprintf(stderr, "Port [ %d ] failed to open\n", i);
}
close_ports(port);
}
trả về 0;
}
在上面的代码中很明显,标签名称是 port_tag,实际类型定义的名称是 port_t。
但是,我正在重新设计一些代码。而且我发现他们使用了一种我以前从未见过的不同方法。我对他们的方法有几个问题。
channel.h头文件
typedef struct channel_t channel_t;
channel_t* open_channels(size_t channel_id);
void close_channels(channel_t *channel);
channel.c实现文件
#include "channel.h"
struct channel_t {
size_t channel_id;
};
channel_t* open_channels(size_t channel_id)
{
channel_t *channel = malloc(sizeof *channel);
if(channel == NULL) {
return NULL;
}
channel->channel_id = channel_id;
return channel;
}
void close_channels(channel_t *channel)
{
if(channel != NULL) {
free(channel);
}
}
driver.c驱动文件
#include "channel.h"
int main(void)
{
size_t i = 0;
channel_t *channel = NULL;
for(i = 0; i < 5; i++) {
channel = open_channels(i);
if(channel == NULL) {
fprintf(stderr, "Channel [ %zu ] failed to open\n", i);
}
close_channels(channel);
}
trả về 0;
}
1) 当他们声明了 typedef'ed struct 时,它是标签名称或结构本身?
typedef struct channel_t channel_t;
2) 在实现文件中,结构的名称不应该跟在最后一个大括号之后吗?
struct channel_t <-- tag name {
size_t channel_id;
} <-- itsn't this the name of the typedef'ed struct;
非常感谢任何建议,
1 Câu trả lời
1.结构类型是struct channel_t
,新的typedef是channel_t
.
这意味着它现在可以用作:
channel_t some_instance;
2。他们在别处创建 typedef,而不是这里。所以所有:
struct channel_t {
size_t channel_id;
};
是用标签channel_t
定义一个结构类型。定义 cấu trúc
时不需要 typedef。它可以用作,例如:
struct channel_t some_instance;
如您所见,在这种情况下,这两种语法基本上是等同的。
关于c - 回顾 typedef'ing struct 的 2 种不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201585/
以下片段的效果之间有什么区别(如果有的话): cout << "Some text" << s1 << "some more text\n"; cout << "Some text" + s1 + "
在解释器模式下运行 python 时,什么是 more-ing 或 less-ing 多行输出的最佳替代方案? 假设,存在一个对象变量foo,它有很多属性。 dir(foo) 会转储到屏幕上。我们无法
在阅读“Lucene in Action 2nd edition”时,我看到了关于 Filter 的描述。可用于在 Lucene 中进行结果过滤的类。 Lucene 有很多过滤器重复 Query类。例
为了满足我对 C 知识的渴求,在连接到我的家庭网络的两个 linux 机器上,我正在编写一个基本的 telnet,它包含 send() 和 recv( ) 的字符串(只是为了获得套接字和线程的一些经验
给定以下三个简单函数: func twice_Array_of_Int(a: [Int]) -> [Int] { return a + a } func twice_Array_of_T(a:
如我的 previous question 中所述,我正在尝试在功能上制作一些有点像向导的东西。我已经确定了一个单独的框架,并添加了一个sizer。我为希望用户看到的每个屏幕构建面板,将它们添加到框架
据我了解,range-v3 库的 View 操作(目前需要 C++17,但要成为 C++20 中 STL 的正式部分)提供了可链接的类 STL 算法,这些算法是延迟计算的。作为实验,我创建了以下代码来
如何选择来自一位特定作者的所有项目?可能这样吗?或者,如果我也想要很多项目类型和项目包(项目有很多项目),我该如何编辑实体? 元素 /** * @ORM\Table() * @ORM\Entity
我想选择以正则表达式结尾的单词,但我想排除以 thing 结尾的单词。例如: everything running catching nothing 这几个词中,选running和catching,排
使用 Julia 1.5.3 和 Julia 1.6.0 两个版本似乎都不支持 & 用于 BitArrays。 我有两个 BitArray,例如 x = BitArray([1,0,1]) 和 y=B
我有一个读取二进制文件然后使用 struct.unpack() 解压文件内容的函数。我的功能工作得很好。如果/当我使用长的“格式”字符串解压缩整个文件时,它会更快。问题是有时字节对齐会发生变化,因此我
阅读维基百科上的“ARM 架构”,发现以下说法: Registers R0-R7 are the same across all CPU modes; they are never banked. R
您好,我需要 ssh 到一个 IP 地址并通过 shell 脚本运行我的 Java 代码我就是这样做的 ssh $LINE java -Djava.library.path=/N/u/sbpatil/
该程序应该读取字符串输入的值并返回结果。 但是,当我使用 System.out.println(Arrays.toString(stack.toArray())); 为了检查堆栈在最后甚至在程序期间的
在 Alpine 镜像中构建的 GO 可执行文件存在一个奇怪的行为,其中标准 LD_PRELOAD 功能无法正常工作。 看起来像 构造函数未被调用 由动态加载器! 我有一个示例 go 应用程序(get
Đã đóng. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại không chấp nhận câu trả lời. Các câu hỏi yêu cầu mã phải chứng minh được sự hiểu biết tối thiểu về vấn đề đang được giải quyết. Bao gồm các giải pháp đã thử, lý do tại sao chúng không hiệu quả và kết quả mong đợi
我在下面写这段代码,发现了这个奇怪的行为: #include #include #include using namespace std; int main() { map map1;
我对 JS 的 .sort() 函数理解得很好,对多维数组的理解也比较松散,但我有点卡住了。这是我得到的: var player1 = ["bob", 20]; var player2 = ["jon
在 python 中有更好的方法吗?: ((w.endswith('<') or w.endswith('
在 Javascript 中,有没有一种方法可以从数组中选择包含某些内容的单词。例如,["swimming", "basketball", "chess", "rowing"],我只想选择包含“-in
Tôi là một lập trình viên xuất sắc, rất giỏi!