搜索
查看: 826|回复: 12
打印 上一主题 下一主题

无聊的做了一个bug满天飞的东西(啊哈C无聊插件)

[复制链接]
跳转到指定楼层
楼主
发表于 2017-1-1 20:00:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
(graphics.h不是tc的那个,是我自己图方便写的一个头文件)
这个简化了我许多的工作:




效果看图:


无聊插件代码:
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
char* GetExePath()
{
    char text[1024];
    char text2[1024];
    int i = 0;
    GetModuleFileName(0,text,sizeof(text));
    for(i = strlen(text);i>=0;i--)
    {
        if(text == '\\')
        {
            break;
        }
    }
    strncpy(text2,text,i);
    return text2;
}
int runcmd(char* lpCmd)
{
    return system(lpCmd);
}
int main(int argc,char* argv[])
{
    char str[4096] = "";
    char str1[1024] = "";
    char str2[1024] = "";
    char str3[1024] = "";
    int t = 0;
    int i;
    if(argc != 6)
    {
        strcpy(str3,GetExePath());
        sprintf(str,"cmd.exe /c start /D %s /B gcc2.exe ",str3);
        if(argc == 1)
        {
            return runcmd(str);
        }
        for(i = 0; i < argc;i++)
        {
            strcat(str,argv);
        }
        return runcmd(str);
    }
    strncat(str1,argv[1],strlen(argv[1]) - 2);
    strcat(str1,".exe");
    remove(str1);
    memset(str1,0,sizeof(str1));
    strncpy(str2,argv[1],strlen(argv[1]) - 2);
    memset(str,0,sizeof(str));
    strcpy(str3,GetExePath());
    sprintf(str,"cmd.exe /c start /D %s /B gcc2.exe -w -o %s %s -lm -L ../lib -static -lgdi32 -L ../lib -static -lgdiplus -L ../lib -static -lmsimg32 -L ../lib -static -lole32 -L ../lib -static -liphlpapi -L ../lib -static -lcomdlg32 -L ../lib -static -lshell32 -L ../lib -static -luser32 -L ../lib -static -lkernel32 -L ../lib -static -lwinmm -L ../lib -static -lws2_32 -DWINVER=0x500",str3,str2,argv[1]);
    return runcmd(str);
}[/mw_shl_code]

推荐
发表于 2017-1-2 20:40:52 | 只看该作者
初学C 发表于 2017-1-2 18:25
我对这个库比较反感的地方在于
借助tc graphics.h (C图形库)的名声来宣扬自己
实际上是C++(硬说是C ...

其实也是借助TC宣传自己反感
推荐
 楼主| 发表于 2017-1-2 15:50:29 | 只看该作者
4399APPLE 发表于 2017-1-2 10:01
然而EasyX比你好多了
不要重复造轮子

sorry 论坛的bug让我重复发了2次                          

点评

我也有过。  发表于 2017-12-22 22:29
推荐
 楼主| 发表于 2017-1-2 12:32:08 | 只看该作者
4399APPLE 发表于 2017-1-2 10:01
然而EasyX比你好多了
不要重复造轮子

然而这是C++的库                    
推荐
 楼主| 发表于 2017-1-2 12:31:22 | 只看该作者
4399APPLE 发表于 2017-1-2 10:01
然而EasyX比你好多了
不要重复造轮子

然而这是C++的库                    
推荐
发表于 2017-1-2 10:01:44 | 只看该作者
然而EasyX比你好多了
不要重复造轮子
沙发
 楼主| 发表于 2017-1-1 20:04:24 | 只看该作者
注意:此插件可以让你的程序使用 winsock gdi 等组件
7#
发表于 2017-1-2 18:12:42 | 只看该作者
初学C 发表于 2017-1-2 12:32
然而这是C++的库

然而你可以手动定义__cplusplus(虽然不好)
8#
 楼主| 发表于 2017-1-2 18:24:20 | 只看该作者
4399APPLE 发表于 2017-1-2 18:12
然而你可以手动定义__cplusplus(虽然不好)

不可以
EasyX使用了重载等C++特性
(我看了头文件)
9#
 楼主| 发表于 2017-1-2 18:25:29 | 只看该作者
4399APPLE 发表于 2017-1-2 18:12
然而你可以手动定义__cplusplus(虽然不好)

我对这个库比较反感的地方在于
借助tc graphics.h (C图形库)的名声来宣扬自己
实际上是C++(硬说是C语言)
其余的还好
10#
发表于 2017-1-2 20:39:24 | 只看该作者
初学C 发表于 2017-1-2 18:24
不可以
EasyX使用了重载等C++特性
(我看了头文件)

然而你觉得lib是需要Cpp的吗
12#
 楼主| 发表于 2017-1-10 20:04:32 | 只看该作者
改进版
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
char* GetExePath()
{
    char text[1024];
    char text2[1024];
    int i = 0;
    GetModuleFileName(0,text,sizeof(text));
    for(i = strlen(text);i>=0;i--)
    {
        if(text == '\\')
        {
            break;
        }
    }
    strncpy(text2,text,i);
    return text2;
}
int runcmd(char* lpCmd)
{
    return system(lpCmd);
}
int main(int argc,char* argv[])
{
    char str[4096] = "";
    char str1[1024] = "";
    char str2[1024] = "";
    char str3[1024] = "";
    int t = 0;
    int i;
    if(argc != 6)
    {
        strcpy(str3,GetExePath());
        sprintf(str,"cmd.exe /c start /D %s /B gcc2.exe \"",str3);
        if(argc == 1)
        {
            return runcmd(str);
        }
        for(i = 0; i < argc;i++)
        {
            strcat(str,argv);
        }
        return runcmd(str);
    }
    strncat(str1,argv[1],strlen(argv[1]) - 2);
    strcat(str1,".exe");
    remove(str1);
    memset(str1,0,sizeof(str1));
    strncpy(str2,argv[1],strlen(argv[1]) - 2);
    memset(str,0,sizeof(str));
    strcpy(str3,GetExePath());
    sprintf(str,"cmd.exe /c start /D \"%s\" /B gcc2.exe -w -o \"%s\" \"%s\" -lm -L ../lib -static -lgdi32 -L ../lib -static -lgdiplus -L ../lib -static -lmsimg32 -L ../lib -static -lole32 -L ../lib -static -liphlpapi -L ../lib -static -lcomdlg32 -L ../lib -static -lshell32 -L ../lib -static -luser32 -L ../lib -static -lkernel32 -L ../lib -static -lwinmm -L ../lib -static -lws2_32 -DWINVER=0x500",str3,str2,argv[1]);
    return runcmd(str);
}[/mw_shl_code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表