warning: implicit declaration

16,880

Solution 1

If you're using the standard islower and isalpha, then somewhere at the top you should see

#include <ctype.h>

for that to happen.

Solution 2

It seems that your header files have no prototype declared for those functions, so the function itself is implicitly treated as the function prototype. As mentioned, add needed headers.

Share:
16,880
JonnyTruelove
Author by

JonnyTruelove

Updated on June 08, 2022

Comments

  • JonnyTruelove
    JonnyTruelove about 2 years

    I have an assignment I am supposed to turn in for my computer science MOOC CS50. In it I have to turn in the assignment over the Harvard website, but it won't accept my code while it says "Warning: implicit declaration..."

    Is there a way to shut that off?

    I have two functions that I am using, islower(), and isupper(), and they are what is causing the hangup.

    My code seems to work just fine, it compiles and everything. BTW if anyone wants to tell me how crappy my code is that would be appreciated. I don't get a lot (or any) criticism taking classes over the web.

    #include <stdio.h>
    #include "cs50.h"
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, string argv[])
    {
        int salt, cipherNum;
        char cipher[40];
        char letter;
    
    
        //// Greeting
        printf("Please enter the text to ceez...\n");
        //// grab text
    
        string txxt = GetString();
    
    
        if (argc == 2) // must have command line argument
        {
    
            salt = atoi(argv[1]) % 26;
            //printf("Salt: %d\n", salt);
        }
    
        else // yell at user if command line arg is not there
        {
            printf("Not cool! I need something to caesariphy...\n");
            return 1;
        }
    
        //~ 
        // This will iterate over each letter in the text
        for (int i = 0, n = strlen(txxt); i < n; i++)
        {
            // int letter = 'A'; i.e. 65 
            // Must Preserve Case
    
            //~ printf("%c---\n", txxt[i]);
    
            //if lower start from 'a'or 97
            if ( islower(txxt[i]) )
            {
                //~ printf("islower\n");
                letter = txxt[i];
                cipherNum = txxt[i];
                //~ printf("%c is the letter\n", letter + salt);
                //~ printf("%d is the cipherNumz\n", cipherNum);
    
                if ((letter + salt) > 122)
                { 
                    //~ printf("letter + salt is > 90: %d \n", letter+salt);
                    cipherNum = (96 + (cipherNum + salt) % 122);
                    //~ printf("%c is the letters", cipherNum); 
                }
                else
                {
                    cipherNum = letter + salt;
                }
    
    
    
                cipher[i] = cipherNum ;
    
            }
            else if ( isupper(txxt[i]))
            {
    
                letter = txxt[i];
                cipherNum = txxt[i];
                //printf("%c is the letter\n", letter + salt);
                //printf("%d is the cipherNumz\n", cipherNum);
    
                if ((letter + salt) > 90)
                { 
                    //printf("letter + salt is > 90: %d \n", letter+salt);
                    cipherNum = (64 + (cipherNum + salt) % 90);
                    //printf("%c is the letters", cipherNum); 
                }
                else
                {
                    cipherNum = letter + salt;
                }
    
                //printf("%c\n", cipherNum);
                cipher[i] = cipherNum ;
                //printf("testing12\n");    
            }
            else
            {
                cipher[i] = txxt[i];
            }
            //~ 
    
        }
        cipher[strlen(txxt) + 1] = '\0';
        printf("%s\n", cipher);
    
    
        return 0;
    }
    
  • JonnyTruelove
    JonnyTruelove over 10 years
    ok thanks. I tried making a prototype for it, but now I have errors saying "requires expression of scalar type". But your method works even better! Thanks
  • Keith Thompson
    Keith Thompson over 10 years
    There's no point declaring standard functions yourself. Use the standard headers; that's why they're there.