我想通过手机阅读所有信息及其各自的详细信息.为此,我使用这样的Uri:
Uri sms = Uri.parse("content://sms/");
Run Code Online (Sandbox Code Playgroud)
但我不知道数据库中有多少列与此uri相关联.
我想显示以下信息:
任何人都可以列举总列名吗?
我注意到在我们的代码库中的几个地方,我们使用动态扩展数组,即一个与元素计数器和"max elements"值相结合的基本数组.
我想要做的是用通常的数据结构和实用程序函数替换它们,这是出于通常的面向对象的原因.数组元素可以是基本数据类型或结构,我需要快速随机访问元素,最好是类型安全的实现.
所以,基本上,我想使用的是STL向量,但代码库仅限于C89所以我必须提出其他的东西:-)
我给了它一些想法并掀起了这个初稿,只是为了展示我的目标:
/* Type-safe dynamic list in C89 */
#define list_declare(type) typedef struct _##type##_list_t { type * base_array; size_t elements; size_t max_size; } type##_list_t
#define list(type) type##_list_t
#define list_new(type, initial_size) { calloc(initial_size, sizeof(type)), 0, initial_size }
#define list_free(list) free(list.base_array)
#define list_set(list, place, element) if ( list.elements < list.max_size ) { list.base_array[place] = element; } else { /* Array index out of bounds */ }
#define list_add(list, element) if ( list.elements < list.max_size ) { list.base_array[list.elements++] = element; …Run Code Online (Sandbox Code Playgroud) Typedef对于可移植名称,标记名称(typedef struct foo Foo;)和保持复杂(函数)声明可读(typedef int
(*cmpfunc)(const void *, const void *);)非常有用.
但是在C中是否存在真正需要typedef的情况?通过简单地写出派生类型,你无法做到这一点.
澄清一点:我的意思是语言用户,而不是实施者.整个stdint.h是第二类的一个很好的例子.
感谢您的输入.我想我可以总结为:
(u)intN_t各种类型.va_arg宏时可能需要typedef ,但我怀疑你在实践中会遇到这些衍生类型.我想匹配墙贴中的url链接并用锚标记替换此链接,为此我使用下面的正则表达式.
我想匹配4种类型的网址:
http://example.comhttps://example.comwww.example.comexample.compreg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@',
'<a href="$1">$1</a>', $subject);
Run Code Online (Sandbox Code Playgroud)
此表达式仅匹配前两种类型的URL.
如果我将此表达式用于匹配url模式
'@(www?([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@',那么它只匹配第三种类型的url模式.
如何将所有四种类型的url模式与单个正则表达式匹配?
$ gcc -O2 -S test.c -----------------------(1)
.file "test.c"
.globl accum
.bss
.align 4
.type accum, @object
.size accum, 4
accum:
.zero 4
.text
.p2align 2,,3
.globl sum
.type sum, @function
sum:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
addl 8(%ebp), %eax
addl %eax, accum
leave
ret
.size sum, .-sum
.p2align 2,,3
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
subl $16, %esp
pushl $11
pushl $10
call sum
xorl %eax, …Run Code Online (Sandbox Code Playgroud) 我的存储库是2.5G.转储通道svnadmin dump myrepos > dumpfile是5G.但当我进行转储时,如
svnadmin dump myrepos -r 23785 > rev-23785.dumpfile23785是最年轻的版本,转储超过15G,此时我停止转储.
当只为一个版本请求转储时,为什么结果远大于整个转储?
在阅读一本名为"Let us C"的书时,我读到了一个showbit()可以显示数字位的函数.没有提到任何特殊的头文件.在互联网上搜索它并没有发现任何有用的东西.有这样的功能吗?我想要打印十进制数的二进制数.否则请给我一个替换功能.谢谢
我的库包含一个内部和外部使用的函数.该函数非常小,我希望编译器在调用internal时尝试内联函数.因为函数使用不完整类型的信息,所以外部调用无法内联.所以我的模块也应该总是包含一个带有外部链接的函数的副本.
我想我找到了以下解决方案,但是您希望得到以下建议:
/* stack.h */
struct stack;
extern bool stack_isempty(struct stack *s);
/* stack.c */
#include "stack.h"
struct stack { [...]; int size; };
inline bool stack_isempty(struct stack *s) { return s->size == 0; }
Run Code Online (Sandbox Code Playgroud)
通常我反过来使用内联或仅static inline在头文件中放置一个函数.但正如所解释的那样,这里不可能.
这种方法是否能产生预期的效果?有没有人看到这种方法的任何缺点(它是便携式C99)?
int main(int argc, char** argv) {
int i=5;
{
int i=7;
printf("%d\n", i);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我想访问outer i(int i=5)值printf那么它怎么做?
假设我们有一个数组说:
int arr[1000];
Run Code Online (Sandbox Code Playgroud)
我有一个适用于该数组的函数说:
void Func(void);
Run Code Online (Sandbox Code Playgroud)
当我可以将arr [1000]作为main()外部的外部变量时,为什么需要通过引用传递(通过更改void)?