小编Mit*_*lin的帖子

在 C 中编译带有自己头文件的文件

我目前正处于学习如何用 C 语言编程的开始阶段,我遇到了一些重新分级头文件的问题。例如

我有一个名为 的头文件header.h

int comp (int, int)宣布在header.h

定义于header.c

在这种情况下,如果我要使用 comp 函数编译 test.c,我必须像

gcc test.c header.c
Run Code Online (Sandbox Code Playgroud)

第一个问题:每次 gcc 都必须添加 header.c 似乎太不方便和多余。这是必需品吗?如果没有,我有办法绕过它吗?如果是这样,为什么?或者事实上,与它的用法相比,它并不多余,我只是在抱怨吗?

第二个问题:如果我要使用多个 .c 文件以及 header.h 中声明的函数,我的 gcc 就必须去

gcc test.c header.c header2.c header3.c .....
Run Code Online (Sandbox Code Playgroud)

这又显得太多余了。(从这里开始,问题与第一个问题相同..)

提前致谢。第一次在SO提问。请告诉我是否有任何办法可以提高问题的清晰度。

c compilation header

5
推荐指数
1
解决办法
2668
查看次数

当使用两个不同的地址调用时,inet_ntoa会给出相同的结果

//
char ip1[] = "127.0.0.1";
char ip2[] = "211.100.21.179";
printf("ip1: %s\nip2: %s\n", ip1, ip2);

// 
long l1 = inet_addr(ip1);
long l2 = inet_addr(ip2);
printf("ip1: %ld\nip2: %ld\n", l1, l2);

//
struct in_addr addr1, addr2;
memcpy(&addr1, &l1, 4);
memcpy(&addr2, &l2, 4);
printf("%u\n", addr1.s_addr);
printf("%u\n", addr2.s_addr);

//
printf("%s\n", inet_ntoa(addr1));
printf("%s\n", inet_ntoa(addr2));

//
printf("%u,%s\n", addr1.s_addr, inet_ntoa(addr1));
printf("%u,%s\n", addr2.s_addr, inet_ntoa(addr2));
printf("%s <--> %s\n", inet_ntoa(addr1), inet_ntoa(addr2));
Run Code Online (Sandbox Code Playgroud)

输出是:

ip1: 127.0.0.1
ip2: 211.100.21.179
ip1: 16777343
ip2: 3004523731
16777343
3004523731
127.0.0.1
211.100.21.179
16777343,127.0.0.1
3004523731,211.100.21.179
211.100.21.179 <--> 211.100.21.179    // why …
Run Code Online (Sandbox Code Playgroud)

c printf

4
推荐指数
1
解决办法
386
查看次数

为什么 git rebase 忽略合并提交?

最近我不得不使用git rebase master. Git,令我惊讶的是忽略了合并提交,这导致了很多令人头疼的问题,代码会消失。最终我发现这-p就是我想要的,但为什么git rebase忽略合并提交的默认行为是?

git rebase

3
推荐指数
1
解决办法
1206
查看次数

Qt WebEngine似乎已初始化

当我运行Qt应用程序时,我收到消息

Qt WebEngine似乎是从插件初始化的。在构造QGuiApplication之前,请使用QCoreApplication :: setAttribute设置Qt :: AA_ShareOpenGLContexts。

无论将其转储到终端上,该应用程序都可以正常运行。我似乎无法找到根本原因,也无法真正理解此消息试图告诉我的内容。此消息是什么意思,我该如何解决?

python qtwebengine pyside2

2
推荐指数
1
解决办法
789
查看次数

使用 const 通过强制转换来计算其他 const 表达式

目前我有以下内容

const WIDTH : u16 = 1920;
const HEIGHT: u16 = 1080;
const PIXELS : usize = 1920 * 1080;
Run Code Online (Sandbox Code Playgroud)

拥有类似的东西会更好

const WIDTH : u16 = 1920;
const HEIGHT: u16 = 1080;
const PIXELS : usize = usize::from(WIDTH) * usize::from(HEIGHT);
Run Code Online (Sandbox Code Playgroud)

但这不会编译。我认为这是因为const编译时变量不能依赖于usize::from. 还有其他选择吗?

rust

2
推荐指数
1
解决办法
402
查看次数

Python 中的 arr 和 arr[:] 有什么区别?

我想知道列表变量本身和后跟 [:] 的列表变量之间的区别

例如,

# When nums are List[int] and res are List,
# what is the difference between
res.append(nums[:])
# and 
res.append(nums)
Run Code Online (Sandbox Code Playgroud)

我在实现递归置换函数时提出了我的问题

# When nums are List[int] and res are List,
# what is the difference between
res.append(nums[:])
# and 
res.append(nums)
Run Code Online (Sandbox Code Playgroud)

提前感谢您的帮助!

python list python-3.x

0
推荐指数
1
解决办法
387
查看次数

标签 统计

c ×2

python ×2

compilation ×1

git ×1

header ×1

list ×1

printf ×1

pyside2 ×1

python-3.x ×1

qtwebengine ×1

rebase ×1

rust ×1