经验(3)c++ <writing clean code>注意!

红色:正确的句法, 蓝色:产生警告,歧义的句法

1. 空语句警告,(如果要用空语句最好用NULL使其明显可见)

while(size -> 0)

NULL;

2.在&& , || , if,  for, wiile 中使用== 和= 要小心,

while( *pchTo++ = *pchFrom )

NULL;

为了防止这样的警告,必须拿别的值,如零或空字符与赋值结果做显式的比较。

可写成: while((*pchTo++ = *pchFrom++) !=  '\0')

NULL;

这里还有一个减少这个警告的方法,将常量放在左边

if( '\t'  ==  ch )

.........

这样不允许对常量进行赋值。

3. 必须对原型进行维护,必须自己建立原型。(防止参数传递的不符合性。)

4.增强原型的能力

如果 void *memchr(const void *pv, int ch, int size)

在调用该函数时,互换了ch与size参数,也不会警告,因此应使用更加精确的类型,增强原型提供的错误检查能力。

void *memchr(const void *pv, unsigned char ch, size_t size);

但是这样的缺陷是:常常必须进行参数的显示类型转化,以消除类型不匹配的错误

5.如果有单元测试, 就进行单元测试。

6. 运算时注意优先级错误

word = bHigh << 8 + bLow 这个被解释成了: word = bHigh << (8 + bLow)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Harmonic analysis is a mathematical tool used to analyze periodic functions by decomposing them into a sum of sinusoidal functions with different frequencies, amplitudes, and phases. In order to perform harmonic analysis using C programming language, the following steps can be followed: 1. Define the periodic function to be analyzed as a series of discrete values. This can be done by either inputting the values manually or by reading them from a file. 2. Calculate the discrete Fourier transform (DFT) of the input signal using the Fast Fourier Transform (FFT) algorithm. This can be implemented using the FFTW library or by writing your own FFT algorithm. 3. Extract the frequency spectrum of the input signal by calculating the magnitude and phase of each frequency component in the DFT output. 4. Use the frequency spectrum to analyze the harmonic content of the input signal by identifying the dominant frequencies and their corresponding amplitudes and phases. 5. Visualize the harmonic analysis results using plots and graphs to better understand the periodic nature of the input signal. Here is an example code snippet in C that performs harmonic analysis on a given periodic function using FFT: ```c #include <stdio.h> #include <stdlib.h> #include <math.h> #include <fftw3.h> #define N 256 // number of discrete samples #define Fs 1000.0 // sampling frequency #define f1 50.0 // fundamental frequency #define f2 100.0 // second harmonic frequency int main() { double x[N], y[N], freq[N], mag[N], phase[N]; int i; // generate a test signal with two harmonics for (i = 0; i < N; i++) { x[i] = sin(2.0 * M_PI * f1 * i / Fs) + 0.5 * sin(2.0 * M_PI * f2 * i / Fs); } // perform FFT on the input signal fftw_complex *in, *out; fftw_plan p; in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); for (i = 0; i < N; i++) { in[i][0] = x[i]; in[i][1] = 0.0; } p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute(p); // extract frequency spectrum from the FFT output for (i = 0; i < N; i++) { freq[i] = i * Fs / N; mag[i] = sqrt(out[i][0] * out[i][0] + out[i][1] * out[i][1]) / N; phase[i] = atan2(out[i][1], out[i][0]); } // print out the harmonic content of the input signal printf("Frequency\tMagnitude\tPhase\n"); for (i = 0; i < N/2; i++) { printf("%f\t%f\t%f\n", freq[i], mag[i], phase[i]); } // clean up resources fftw_destroy_plan(p); fftw_free(in); fftw_free(out); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值