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


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.