首先,我想首先使用inotify来监视文件和子目录的特定目录(主目录).如果将新目录添加到此主目录中,我如何确保使用inotify监视此子目录?如何监视主目录的此子目录中的新目录?
我认为通过使用该inotify_add_watch()函数将其添加到手表很容易,但我不知道如何在子目录中获取文件和目录的正确相对路径地址(用于在保持其他位置的类似Dropbox的同步中正确的目录树,例如).
每当我尝试在终端上使用 g++ 编译 c++ 代码时,即使我确信在编译时应该捕获一些错误(例如语法、引用类型),我似乎也无法让 g++ 输出任何错误消息。 ..)。
我尝试了几种方法,例如这个 make 文件:
all:
g++ -W -Wall -Werror main.cpp
Run Code Online (Sandbox Code Playgroud)
它所做的只是输出:
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)
显然这没那么有用...
输入类似这样的内容:
g++ -W -Wall -Werror main.cpp
Run Code Online (Sandbox Code Playgroud)
直接到终端(没有 make 文件)根本不输出任何消息。
但是,这在编译时成功输出了所有错误:
cc main.cpp
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何让 g++ 输出错误消息,以便我知道在哪里更正我的代码?
我在排序2D动态结构数组时遇到问题.
我有一个结构:
typedef struct abc
{
int total;
} abc;
Run Code Online (Sandbox Code Playgroud)
和动态2D数组:
list = (abc**)malloc(listSize * sizeof(abc*));
for (int i = 0; i < listSize; i++)
{
list[i] = (abc*)malloc(listSize2* sizeof(abc));
}
Run Code Online (Sandbox Code Playgroud)
我想使用排序算法:
qsort(list, listSize, sizeof list[0], cmp);
Run Code Online (Sandbox Code Playgroud)
和qsort的比较函数:
int cmp(const void *l, const void *r)
{
const abc *a = *(const abc **)l;
const abc *b = *(const abc **)r;
return a[0].total > b[0].total;
}
Run Code Online (Sandbox Code Playgroud)
但问题是虽然我认为它适用于一个小列表(如大约5个整数),但如果列表有点大,它就无法正确排序.我该怎么做cmp()函数才能正常工作?
顺便说一下,我只需要排序,list[x][0]因为我稍后会添加更多元素.