这个C ++代码有什么问题?

时间:2010-03-22 15:43:29

标签: c++

我是初学者,我遇到了问题:

此代码无法编译:

main.cpp中:

#include <stdlib.h>
#include "readdir.h"
#include "mysql.h"
#include "readimage.h"


int main(int argc, char** argv) {
    if (argc>1){
    readdir(argv[1]);
  //  test();
    return (EXIT_SUCCESS);
    }
    std::cout << "Bitte Pfad angeben !" << std::endl ;
    return (EXIT_FAILURE);
}

readimage.cpp

#include <Magick++.h>
#include <iostream>
#include <vector>

using namespace Magick; using namespace std;

void readImage(std::vector<string> &filenames) {
    for (unsigned int i = 0; i < filenames.size(); ++i) {
        try {
            Image img("binary/" + filenames.at(i));

            for (unsigned int y = 1; y < img.rows(); y++) {
                for (unsigned int x = 1; x < img.columns(); x++) {
                    ColorRGB rgb(img.pixelColor(x, y));
                    // cout << "x: " << x << "   y: " << y << " : "  << rgb.red() << endl;
                }
            }
            cout << "done " << i << endl;
        } catch (Magick::Exception & error) {
            cerr << "Caught Magick++ exception: " << error.what() << endl;
        }
    } }

readimage.h

#ifndef _READIMAGE_H
#define _READIMAGE_H

#include <Magick++.h>
#include <iostream>
#include <vector>
#include <string>

using namespace Magick;
using namespace std;

void readImage(vector<string> &filenames)


#endif  /* _READIMAGE_H */

如果想用这段代码编译它:

  

g ++ main.cpp Magick++-config --cflags --cppflags --ldflags --libs readimage.cpp

我收到此错误消息:

  

main.cpp:5:错误:预期   'int'之前的初始化程序

我不知道为什么? :(

有人能帮助我吗? :)

6 个答案:

答案 0 :(得分:7)

readimage.h 中,您在readImage函数声明后缺少分号。

答案 1 :(得分:5)

第一次编译时应该做的第一件事就是一次尝试一段代码。不要把一堆代码放在一起,希望它能编译。相反,一次取一个片段。所以在这里,您可以注释掉您的包含以及您希望在这些文件中使用这些内容的代码。

乍一看,它看起来像是

void readImage(vector<string> &filenames)

在该行的末尾缺少分号,因为您要声明它。

答案 2 :(得分:3)

在readImage.h中,你在readImage函数原型之后缺少一个分号。

答案 3 :(得分:3)

此功能声明:

void readImage(vector<string> &filenames)

最后缺少分号。一个不相关的问题 - 你的包含警卫名称:

#ifndef _READIMAGE_H

是非法的。以下划线和大写字母开头的名称在C ++中保留 - 您不能自己创建此类名称。

在你的循环中:

for (unsigned int y = 1; y < img.rows(); y++) {

你确定你应该在1开始循环而不是零吗?

答案 4 :(得分:1)

;

结尾处缺少

readimage.h

main.cpp首先进行预处理后,它会在readimage.h的最后一行找到错误,并在int main.cpp之前>

main.cpp:5: error: expected initializer before ‘int’

答案 5 :(得分:1)

在readimage.h中readImage声明结尾处只需要一个分号:

void readImage(vector<string> &filenames);