是否可以创建一个函数而不是两个具有相同目的但不同参数类型的函数?
我有两个用C编写的函数,它们将图像从RGB转换为HSV:
void png_rgb2hsv(pPNG_DATA data);
void jpg_rgb2hsv(pJPEG_DATA data);
Run Code Online (Sandbox Code Playgroud)
它们完全相同:它们采用数据 - > row_pointers并将其循环到循环数据 - >高度时间.然后它转换data-> row_pointers引用的值.这是它的工作原理.但唯一的区别是数据结构使用不同的类型.对于同样的事情,使用两个函数似乎毫无意义.特别是当我为更多色彩空间添加更多功能时.
如何在C的实践中解决这个程序设计问题?
更新: 大多数读者都不理解这个问题.我没有问过重载.这是关于设计的问题.我问是否可以删除冗余功能,"冗余"代码.因为两个函数都使用相同的代码,所以做同样的事情,但函数参数中的类型是不同的,因为一个类型来自libjpeg而第二个类型来自libpng.我发现它是不可能的,因为它意味着将一个变量用于两种不同的类型.
我想将变量与字符串连接起来.
在第7行到第11行,我尝试连续!一些变量!用字符串或%% P变量.
但这似乎不起作用.
即你当前文件夹中有0_1_en.pdf文件.
该脚本将文件名快捷键到第一个数字.
之后我想创建一个带有字符串的新变量,例如:
"GEN 0" where 0 is the !sPDFName!
完整代码:
1 SETLOCAL EnableDelayedExpansion
2 for /f "delims=" %%P in ('dir /b *.pdf') do (
3 SET "sPDFName=%%~nxP"
4 echo "!sPDFName:~0,1!"
5 IF "!sPDFName:~0,1!"=="1" (SET "sPDFName=!sPDFName:~0,1!")
6 IF "!sPDFName:~0,1!"=="0" (SET "sPDFName=!sPDFName:~0,1!")
7 SET tempStr=GEN !sPDFName!
8 SET myvar=!myvar! %%P
9
10 echo "%myvar%"
11 echo "%tempStr%"
12 ::echo "!sPDFName!"
13 pause
14 for /f "delims=" %%H in ('dir /b *.html') do (
15 IF "!sPDFName:~-0!"=="!%%H:~0,1!" echo …Run Code Online (Sandbox Code Playgroud) 你能帮我一个命令将svg文件转换为ghostscript中的eps吗?我试图在Gimp中打开svg文件,但它非常大,所以看起来gimp无法打开它或者它需要太长时间.我有两个要转换的文件.
注意:我已经完成了从png到svg的转换,将光栅转换为矢量,转换占用了我的大部分系统磁盘空间(大约2GB).有没有可能使用外部缓存驱动器的命令?
我在欧洲的Windows cmd.exe上运行此代码,我在这里使用本地设置,用于我的语言.所以我在目录的名称中使用变音符号.
我尝试列出目录的名称,并正确显示.然后我将它们保存到文件中,但是当我在记事本中打开它时,变音符号是不可读的:例如,而不是St?ední ?echy我有Stýedn? ¬echy.
我做错了什么,如何纠正?
@echo off
del directories.conf
FOR /F "delims=!" %%R IN ('dir * /b /a:d /o:n') DO (
IF EXIST "%%R\scenery" (
echo %%R
echo %%R >> directories.conf
) ELSE (ECHO NOT INCLUDED %%R)
)
Echo Directory list created...
pause
Run Code Online (Sandbox Code Playgroud) 是否可以从 CMD 关闭 Windows 资源管理器?我有一个执行此操作的批处理:它将更改目录,在此文件夹中打开资源管理器,而不是运行程序。用户关闭程序后,批处理应关闭资源管理器(或所有打开的资源管理器),继续下一个文件夹(cd 文件夹),在该文件夹中运行相同的程序等等。直到处理完最后一个文件夹。
我需要可靠的方法为Windows和XP创建%tab%(包含一个制表符).
SET TAB=" "
Run Code Online (Sandbox Code Playgroud)
应该适用于Windows 7(未经测试)但不适用于Win XP(已测试).
这个
for /F "skip=4 delims=pR tokens=1,2" %%a in ( 'reg query hkcu\environment /v temp' ) do set TAB=%%b
Run Code Online (Sandbox Code Playgroud)
仅适用于Win XP.
你能帮我把这个文件http://techpatterns.com/downloads/firefox/useragentswitcher.xml中的浏览器 列入txt文件,用%tab%delimiter分隔吗?
应该有3或4列:
1)来自示例数据的文件夹描述: <folder description="Browsers - Windows">
2)来自示例数据的浏览器类型: <folder description="Legacy Browsers">
3)来自示例数据的用户代理:<useragent description="Avant Browser 1.2" useragent="Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)" app
在这里我看到第一个问题,因为有些浏览器不在文件夹中<folder description="Legacy Browsers">"但在下面<separator/>
所以第一列应该定义系统,第二列是类型,第三列是浏览器.
下一个问题是Devises文件夹包含一个以上的文件夹.
@echo off
Setlocal EnableDelayedExpansion
SET file=useragentswitcher.xml
SET delim="
FOR /F "tokens=* skip=1" %%F IN (!file!) DO (
REM echo %%F
call :parse "%%F" > temp.txt
FOR /F "tokens=1,2,3,4,5,6,7 skip=1 delims=" %%A IN (temp.txt) DO (
IF "%%A"=="folder" (
SET /A level=!level!+1
echo Level:!level!
) ELSE IF "%%A"=="/folder" (
SET …Run Code Online (Sandbox Code Playgroud) 我尝试将自定义图标(13x13 尺寸)添加到项目中。
我找不到为什么无法加载图标。
CVTRES:致命错误 CVT1100:重复资源。类型:ICON,名称:1,语言:0x0409 LINK:致命错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏
来自resource.h的一些信息:
#define IDI_LOGO 16 //0x10 - no problem here
...
/* Bitmaps */
#define IDB_LOGO 200
#define IDB_GOOD 201
#define IDB_EVIL 202
/* Icons */
#define IDI_TERRAIN 90 // problem starts here
#define IDI_ELEV 91
#define IDI_DRAWREPLACE 92
#define IDI_DRAWFILL 93
#define IDI_DRAWBRUSH 94
Run Code Online (Sandbox Code Playgroud)
通用.rc:
#include "resource.h"
/* Bitmaps */ // no problem
#define IDB_LOGO 200
#define IDB_GOOD 201
#define IDB_EVIL 202
/* Icons */ // problem:
#define IDI_TERRAIN 90
#define …Run Code Online (Sandbox Code Playgroud) 我开始使用C.我有定义全局变量的问题.例如,platformID在install.c中使用.我在main.c中声明但仍然出错:
install.c | 64 |错误:'platformID'未声明(首次在此函数中使用)|
main.c中:
#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif
cl_int err;//the openCL error code/s
cl_platform_id platformID;//will hold the ID of the openCL available platform
cl_uint platformsN;//will hold the number of openCL available platforms on the machine
cl_device_id deviceID;//will hold the ID of the openCL device
cl_uint devicesN; //will hold the number of OpenCL devices in the system
#include "include/types.h"
#include "include/gaussian.h"
#include "include/args.h"
#include "include/files.h"
#include "refu/Time/rfc_timer.h"
#include <stdio.h>
Run Code Online (Sandbox Code Playgroud)
...
install.c
#include "include/types.h"
#include "include/gaussian.h" …Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio 2010 C++
如何删除此错误?
error C2065: 'OCR_NORMAL' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)
近
wc.hCursor =
(HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(OCR_NORMAL), IMAGE_CURSOR, 0, 0, LR_SHARED)
Run Code Online (Sandbox Code Playgroud)
答案如下:这帮助我解决了这个问题.