小编Gnu*_*bie的帖子

为什么C预处理器将枚举值视为相等?

为什么std::cout以下代码中的行仍然运行A并且B不同?

#include <iostream>

enum T { A = 1, B = 2 };
// #define A 1
// #define B 2

int main() {
#if (A == B)
    std::cout << A << B;
#endif
}
Run Code Online (Sandbox Code Playgroud)

如果我使用#define(如注释掉),我没有得到任何输出,如我所料.

问题的原因:

我希望有一个模式选择器用于某些测试代码,我可以通过在顶部注释/取消注释行来轻松更改模式:

enum T { MODE_RGB = 1, MODE_GREY = 2, MODE_CMYK = 3 };
// #define MODE MODE_RGB
#define MODE MODE_GREY
// #define MODE MODE_CMYK

int main() {
#if (MODE == MODE_RGB)
    // do RGB …
Run Code Online (Sandbox Code Playgroud)

c++ c-preprocessor

61
推荐指数
6
解决办法
8272
查看次数

在bash shell脚本中将管道与退出状态组合在一起

我有这个bash shell-script命令,如果make成功(以零退出状态终止)导致日期运行,反之亦然:

make && date
Run Code Online (Sandbox Code Playgroud)

但现在我想处理它的输出,例如

make | sed s/a/A/
Run Code Online (Sandbox Code Playgroud)

如果我做

make | sed s/a/A/ && date
Run Code Online (Sandbox Code Playgroud)

即使make失败,日期也会运行.

如果我改为做

make && date | sed s/a/A/
Run Code Online (Sandbox Code Playgroud)

sed的过程日期的输出,而不是化妆的.

你知道任何解决方案吗?谢谢!


PS我试过这些:

(make | sed s/a/A/) && date
Run Code Online (Sandbox Code Playgroud)

make失败时,日期仍会运行.

(make && (date > /dev/null)) | sed s/a/A/
Run Code Online (Sandbox Code Playgroud)

make成功时,日期不会运行.

bash shell pipe exit-code

9
推荐指数
2
解决办法
2763
查看次数

如何在没有原型的情况下找到C函数?

公司政策规定C源代码中的每个函数都有一个原型.我继承了一个带有自己的make系统的项目(所以我不能在gcc或Visual Studio上测试它),并发现其中一个文件有一些声明没有原型的静态函数.是否有一种方法(不一定是编译器)列出所有.c文件中没有原型的所有函数?

c function-prototypes

9
推荐指数
2
解决办法
655
查看次数

如何在Perforce中过滤多个用户提交的列表?

如何在perforce中过滤多个用户的"已提交"视图?我想在"已提交"视图中只看到少数(4-5?)人.有一个过滤功能,但过滤器不需要多个用户.那么,我可以在perforce的"已提交"视图中指定多个用户吗?

perforce p4v

8
推荐指数
1
解决办法
2997
查看次数

在MATLAB编辑器中自动换行

如何在MATLAB R2011b编辑器中自动换行长行的脚本和函数?

我并不是说使用Ctrl + J来包装注释,而是在几行上显示一条长行,每行(除了最后一行)编辑器框架的宽度,就像在大多数文本编辑器中一样,所以我不需要水平滚动; 效果纯粹是视觉效果,它在文件中保持为单行.

我在任何菜单,工具栏或首选项对话框中都找不到设置.

虽然我可以使用"..."将线分成多行,但我不想这样做.我想将它保存为文件中的一行,只显示它包装,如在Windows记事本中的格式> Word Wrap中.

ide matlab editor word-wrap

8
推荐指数
1
解决办法
9196
查看次数

在C的printf中进行数字分组

我希望用千位分隔符(逗号或空格)输出大数字 - 基本上与如何在3位分组中显示数字printf在C中使用(GNU,99)相同.

如果printf本身不支持数字分组,我怎么能用类似的东西来实现printf("%s", group_digits(number))呢?

它必须支持负整数,最好还有浮点数.

c printf grouping digit

5
推荐指数
1
解决办法
9000
查看次数

使用printf,左右对齐给定长度的两个字符串

在C或Bash shell中使用printf,如何将两个字符串(字符数组)左右对齐到给定长度?

例如,如果字符串是"堆栈"和"溢出",并且长度是20个字符,我希望打印

stack-------overflow
Run Code Online (Sandbox Code Playgroud)

(为清楚起见,每个空间都显示为破折号).

字符串长度未知.如果总长度+ 1超过给定的长度,是否可以从给定方向截断一个或两个字符串并在它们之间留一个空格?例如,如果长度为10,我们可以得到这些吗?

stack-over
stack-flow
s-overflow
k-overflow
Run Code Online (Sandbox Code Playgroud)

我知道的printf("%10秒",字符串)证明一个字符串的权利和printf("% - 10秒",字符串)证明一个字符串的左边,但不能找到一种方法来证明2串,或截断他们.

c bash printf justify text-justify

5
推荐指数
1
解决办法
1万
查看次数

如何找出在 C++ 中用于 OpenCV .at 函数的类型?

有没有一种简单可靠的方法来找出我应该为给定 CV 类型的 Mat 的 .at 函数使用什么等效类型?

例如,我怎么知道应该用ushort,float和填充空格Vec3b

Mat mat1(1, 2, CV_16UC1, 12345);
std::cout << mat1.at<___>(0, 1) << "\n";
Mat mat2(1, 2, CV_32FC1, 67.89);
std::cout << mat2.at<___>(0, 1) << "\n";
Mat mat3(1, 2, CV_8UC3, Scalar(65, 66, 67));
std::cout << mat3.at<___>(0, 1)[2] << "\n";
Run Code Online (Sandbox Code Playgroud)

c++ opencv

5
推荐指数
1
解决办法
1472
查看次数

在 MATLAB 立体参数和 OpenCV 立体校正立体校准之间转换

我希望将 MATLAB 立体参数结构转换为内在和外在矩阵,以在 OpenCV 的立体校正中使用。

如果我理解http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.htmlhttp://mathworks.com/help/vision/ref/stereoparameters-class.html、stereoParameters.CameraParameters1 和stereoParameters .CameraParameters2 存储内部矩阵,而stereoParameters 的其他成员存储外部矩阵。

我想我得到了这个映射

内在:

  • cameraMatrix1 =stereoParameters.CameraParameters1.IntrinsicMatrix'
  • cameraMatrix2 =stereoParameters.CameraParameters2.IntrinsicMatrix'
  • distCoeffs1 = [stereoParameters.CameraParameters1.RadialDistortion(1:2),stereoParameters.CameraParameters1.TangentialDistortion,stereoParameters.CameraParameters1.RadialDistortion(3)]
  • distCoeffs2 = [stereoParameters.CameraParameters2.RadialDistortion(1:2),stereoParameters.CameraParameters2.TangentialDistortion,stereoParameters.CameraParameters2.RadialDistortion(3)]

外在:

  • R =stereoParameters.RotationOfCamera2'
  • T =stereoParameters.TranslationOfCamera2'

到目前为止,这是正确的吗?

还是看不懂怎么获取

  • R1 (3x3)
  • R2 (3x3)
  • P1 (3x4)
  • P2 (3x4)
  • Q (4x4)

来自其余立体参数的矩阵。

是否有我可以使用的现有转换器,如果没有,公式是什么?

matlab opencv stereoscopy stereo-3d camera-calibration

5
推荐指数
1
解决办法
2405
查看次数

在每个C函数的开头自动运行代码

我有一个几乎完全相同的问题如何在每个函数的入口处添加代码?但是对于C:

由于我正在维护其他人的大型无证项目,我希望代码类似于

static C0UNT_identifier_not_used_anywhere_else = 0;
printf("%s%s:%d#%d", __func__, strrchr(__FILE__,'/'), __LINE__, ++C0UNT_identifier_not_used_anywhere_else);
Run Code Online (Sandbox Code Playgroud)

在每个功能的输入上运行,这样我

  1. 记录什么叫什么,和
  2. 可以告诉,哪个ñ 调用它打破了功能.

现有代码包含数百个源文件,因此放置宏是不可行的

#define ENTRY_CODE ...
...
int function() {
  ENTRY_CODE
  ...
}
Run Code Online (Sandbox Code Playgroud)

在每个功能.我也没有使用DevStudio,Visual Studio或其他提供__cyg_profile_func_enter或其他扩展程序的编译器.

或者,我想以类似的方式printf退出每个函数的返回值.我也能这样做吗?

c debugging gcc function c-preprocessor

4
推荐指数
1
解决办法
286
查看次数