সংকলক ত্রুটি: এই সুযোগে মেমসেট ঘোষণা করা হয়নি


100

আমি উবুন্টু 9.10 (জিসিসি 4.4.1) এ আমার সি প্রোগ্রামটি সংকলনের চেষ্টা করছি।

আমি এই ত্রুটি পাচ্ছি:

Rect.cpp:344: error: memset was not declared in this scope

তবে সমস্যাটি হ'ল আমি ইতিমধ্যে আমার সিপিপি ফাইলটিতে অন্তর্ভুক্ত করেছি:

#include <stdio.h>
#include <stdlib.h>

এবং একই প্রোগ্রামটি উবুন্টু 8.04 (জিসিসি 4.2.4) এর অধীনে সূক্ষ্ম সংকলন করে।

দয়া করে আমাকে বলুন আমি কী অনুপস্থিত।


2
আমি এখনও বুঝতে পারি না এমন কিছু এটি কেন জিসিসি ও উবুন্টুর পুরানো সংস্করণগুলিতে জরিমানা সংকলন করে এবং নতুন সংস্করণগুলিতে নয়। কেন কেউ ব্যাখ্যা করতে পারেন?
ডেনিস

2
@ ডেনিস: সম্ভবত আপনার পুরনো জিসিসি / উবুন্টু কনফিগারেশনে অন্য কোনও ডি হেডারের মাধ্যমে অপ্রত্যাশিতভাবে প্রয়োজনীয় শিরোনামটি ডি <string.h>করা হচ্ছে because #include#include
পল আর

@ ডেনিস-কে জিসিসি বিকল্পগুলিতে ব্যক্তিগতভাবে যুক্ত করা এই অদ্ভুত ক্ষেত্রেও সহায়তা করতে পারে, যদিও এটি কেবল একটি কর্মক্ষেত্র
ইমু

উত্তর:


172

আপনার <string.h>(বা এর সি ++ সমতুল্য <cstring>) অন্তর্ভুক্ত করা উচিত ।


135

আপনি যখনই এরকম সমস্যা পান তবে প্রশ্নটির জন্য ফাংশনটির জন্য ম্যান পৃষ্ঠায় যান এবং এটি আপনাকে বলবে যে আপনি কোন শিরোনাম অনুপস্থিত রয়েছেন, যেমন

$ man memset

MEMSET(3)                BSD Library Functions Manual                MEMSET(3)

NAME
     memset -- fill a byte string with a byte value

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <string.h>

     void *
     memset(void *b, int c, size_t len);

লক্ষ্য করুন সি জন্য ++, সাধারণভাবে সঠিক সমতুল্য সি ++ হেডার ব্যবহার করা বাঞ্ছনীয় <cstring>/ <cstdio>/ <cstdlib>/ ইত্যাদি, বরং সি এর চেয়ে <string.h>/ <stdio.h>/ <stdlib.h>/ ইত্যাদি।


37
গ্রেট! আপনি আমাদের একটি মাছ দেওয়ার পরিবর্তে কীভাবে মাছ ধরতে শিখিয়েছেন, থাম্ব আপ!
lukmac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.