比方说,我们有几个C源文件,如file1.c,file2.c和main.c.我们的功能如下:
file1.c
|---> file1Func1()
|---> file1Func2()
file2.c
|---> file2Func1()
|---> file2Func2()
Run Code Online (Sandbox Code Playgroud)
并且主文件使用这些功能.现在,很自然,我创建并在头文件中添加相应的函数原型file1.h和file2.h,然后在包括这些头main.c使用该功能.
如果我有一个包含超过一千个源(C)文件的非常大的项目,我应该总是为每个源文件创建一个标题(然后添加函数原型).然后包括使用函数的标题?
或使用EXTERN使用别处定义的函数(在其他一些源文件),并依靠链接程序搜索,并在链接时获取从对象文件中的函数?
注意:使用后一种方法会触发没有函数原型的MISRA警告.
我使用gettimeofday()连续打印微秒.如在程序输出中给出的那样,您可以看到时间不是更新的微秒间隔,而是某些样本的重复时间,然后增量不是以微秒为单位,而是以毫秒为单位.
while(1)
{
gettimeofday(&capture_time, NULL);
printf(".%ld\n", capture_time.tv_usec);
}
Run Code Online (Sandbox Code Playgroud)
节目输出:
.414719
.414719
.414719
.414719
.430344
.430344
.430344
.430344
e.t.c
Run Code Online (Sandbox Code Playgroud)
我希望输出顺序递增,如,
.414719
.414720
.414721
.414722
.414723
Run Code Online (Sandbox Code Playgroud)
要么
.414723, .414723+x, .414723+2x, .414723 +3x + ...+ .414723+nx
Run Code Online (Sandbox Code Playgroud)
当我从capture_time.tv_usec获取它时,似乎没有刷新微秒.
================================= //完整计划
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <stdio.h>
#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64
#else
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
#endif
struct timezone
{
int tz_minuteswest; /* minutes W of Greenwich */
int tz_dsttime; /* type of dst correction */
};
timeval capture_time; …Run Code Online (Sandbox Code Playgroud) CONCEPT:通过引用传递指针
试图实现:从函数获取更新的指针地址,作为参数传递时.
int main(void)
{
uint8_t unArray[10] = {0}; // unint8_t is type def as unsigned char
uint8_t * pmyPtr;
pmyPtr = unArray;
func(pmyPtr);
*pmyPtr = someValue3;
}
void func(uint8_t * unPtr)
{
*unPtr = someValue1;
unPtr++;
*unPtr = someValue2;
unPtr++;
}
Run Code Online (Sandbox Code Playgroud)
假设我们的unArray地址为0x0001000.所以pmyPtr将为0x0001000分配一个常量指针.
当指针传递给函数func时,一些索引(前两个)由DE引用更新.
当我在func执行后回到main时,我正在尝试更新第三个索引.如何实现这一目标.我有一种预感,即双重引用可能很方便.