当我运行以下命令时,它将为我提供捆绑器的可用安装版本:
命令:
gem list | grep "bundle"
Run Code Online (Sandbox Code Playgroud)
输出:
bundler (1.11.2, 1.10.6, 1.10.4, 1.3.6, 1.3.0, 1.3.0.pre)
Run Code Online (Sandbox Code Playgroud)
我使用以下命令获得的当前捆绑器版本为1.11.2:
bundler --version
Run Code Online (Sandbox Code Playgroud)
我想使用版本1.3.6,如何将当前版本的捆绑程序替换为可用的捆绑程序?
假设我有一个带有两个子目录 B 和 C 的父目录 A。
子目录 C 有 helper.c 和 helper.h,如图:
//helper.c
void print(){
printf("Hello, World!\n");
}
//helper.h
void print();
Run Code Online (Sandbox Code Playgroud)
现在,在子目录 B 中,我有一个 main.c,它只调用打印函数:
//main.c
#include<stdio.h>
#include"../C/helper.h"
void main(){
print();
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下命令来编译 main.c:
Command 1: gcc main.c //Gives undefined reference to 'print' error
Command 2: gcc main.c ../C/helper.c //Compiles successfully
Run Code Online (Sandbox Code Playgroud)
现在我从 main .c 中删除了 #include"../C/helper.h" 并再次尝试命令 2。它仍然有效。
所以我有以下问题:
i) 是否包含 helper.h 文件或 helper.c 有什么区别?
ii) 为什么命令 1 失败?
iii) 有没有办法编译我的 C 程序而不必每次都指定 helper.c?
考虑以下C代码:
#include <stdio.h>
#include<stdlib.h>
int main() {
int arrSize;
scanf("%d", &arrSize);
printf("%d\n",arrSize);
int *dynArr = (int *)malloc(sizeof(int)*arrSize);
int arr1[arrSize];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,arrSize是作为用户输入的数组的大小.以下观察结果是否正确:
i)dynArr是一个动态数组,它在运行时从堆部分分配内存.可以使用realloc函数修改dynArr的大小.
ⅱ).arr1也在运行时分配内存,但不是动态的,即它们的大小无法修改.内存是从堆栈或数据部分分配的.(不确定内存分配的堆或堆栈/数据部分以及原因).
他们中的任何一个都暗示另一个吗?
我的逻辑是,如果保留所有依赖项,则不会丢失信息,同样,如果分解是无损的,则一定不会违反功能依赖项。
所以本质上,依赖保留是一种确保您的分解无损的方法。
我很难接受/拒绝它。那么这两者是相互保证的,还是有一种情况可以在没有另一个的情况下实现?
database-design decomposition database-normalization functional-dependencies
可以将标准输入/输出设置为C程序的文件.我知道我们可以使用fscanf和fprintf来读取和写入文件但是通过将std i/o设置为文件,我们可以在C程序中使用printf/scanf进行i/o操作吗?