我目前正处于学习如何用 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提问。请告诉我是否有任何办法可以提高问题的清晰度。
//
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) 最近我不得不使用git rebase master
. Git,令我惊讶的是忽略了合并提交,这导致了很多令人头疼的问题,代码会消失。最终我发现这-p
就是我想要的,但为什么git rebase
忽略合并提交的默认行为是?
当我运行Qt应用程序时,我收到消息
Qt WebEngine似乎是从插件初始化的。在构造QGuiApplication之前,请使用QCoreApplication :: setAttribute设置Qt :: AA_ShareOpenGLContexts。
无论将其转储到终端上,该应用程序都可以正常运行。我似乎无法找到根本原因,也无法真正理解此消息试图告诉我的内容。此消息是什么意思,我该如何解决?
目前我有以下内容
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
. 还有其他选择吗?
我想知道列表变量本身和后跟 [:] 的列表变量之间的区别
例如,
# 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)
提前感谢您的帮助!
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